创建对象

1,利用new Object()创建对象

var obj1 =new Object();

2,利用对象字面量创建对象

var obj2={};

3,利用构造函数创建对象

function Star(uname,age){
this.uname=uname;
this.age=age;
sing(){
console.log(“我会唱歌”);
}
}
var ldh=new Star(“刘德华”,18);
ldh.sing();

构造函数和原型

构造函数

构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量初始值,它总与new 一起使用,我们可以把对象中一些公共的属方法抽取出来,然后封装到这个函数里面。

操作符new 在执行时会做四件事情

1,在内存中创建一个新的空对象;
2,让this指向这个新的对象;
3,执行构造函数里面的代码,给这个新对象添加属性和方法;
4,返回这个新对象(所以构造函数里面不需要return);

成员:实例成员和静态成员

1,实例成员就是构造函数内部通过this添加的成员 比如可能的属性name,age属性和sing方法就是实例成员;
实例成员只能通过实例化的对象来访问;
console.log(ldh.uname);
2,静态成员只能通过构造函数来访问

有一点要注意:创建对象用构造函数方法很好用,但是存在浪费内存的问题;
构造函数原型 prototype
构造函数通过原型分配的函数是所有对象所共享的
JavaScript规定,第一个构造都有一个prototype属性,指向另一个对象是,请注意这个prototype就是一个对象,这个对象的所有属性和方法,都会构造函数所拥有。
我们可以把那些不变的方法,直接定义在prototype对象上,这样所有对象的实例就可以共享这些方法。
原型是一个对象,我们也称prototype为原型对象。使用原型一般是来放置公共方法以减少运行内存及代码量;
例:函数名.prototype.新的普通方法名=function(){}

constructor构造函数和原型

当用构造函数的原型对象时候,当对其重新赋值(即:构造函数名.prototype={} )要重新对构造函数名.prototype(原型)下的constructor属性赋值,以使原型重新指向它的构造函数;不然此原型就没有了创建出它的构造函数;
例:Star.prototype={constructor:Star;}

原型和原型链

es6的原型和原型链的关系图如下所示。

①每个函数都有一个prototype属性,这个属性会指向一个对象,就是通过调用该构造函数而创建的实例原型,可以通过实例对象的__proto__来访问到这个原型对象。
②实例在创建时,就会默认关联原型,并且会从原型继承属性。

③而每一个原型对象有都会存在一个constructor属性,这个属性会指向关联的这个构造函数。
④当访问一个实例对象的属性时,如果说这个实例对象中没有这个属性,那么JS引擎就会去该实例对象的原型对象中去找。
⑤如果属性在原型对象中也找不到,那么就会去原型的原型中去找,一直到找到最上层的原型,也就是Object为止。

this指向

this一般都是指向对象实例,即:属性或方法的调用者;
1,在构造函数中,里面this指向的是对象实例
2,原型对象函数里面的this指向的是实例对象;

类的本质是function(函数),可以简单地认为类是构造函数的一种特殊写法;
ES6之前通过 构造函数+原型实现面向对象 编程
1,构造函数有原型对象prototype
2,构造函数对象protoype里面有constructor指向函数本身
3,构造函数可以通过对象添加方法
4,构造函数创建的实例对象有__proto__原型指向构造函数对象
ES6通过类实现面向对象编程

ES5中新增的方法

ES中给我新增了一些方法,可以很方便的操作数组或者字符串,这些方法主要包括:
1,数组方法
2,字符串方法
3,对象方法

数组方法

迭代(遍历)方法:forEach(),map(),some(),every();

回调函数

一. 回调函数的作用

js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数。

二. 回调函数的解释

因为函数实际上是一种对象,它可以存储在变量中,通过参数传递给另一个函数,在函数内部创建,从函数中返回结果值”,因为函数是内置对象,我们可以将它作为参数传递给另一个函数,到函数中执行,甚至执行后将它返回,它一直被“专业的程序员”看作是一种难懂的技术。

回调函数的英文解释为:

A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.

翻译过来就是:回调函数是一个作为变量传递给另外一个函数的函数,它在主体函数执行完之后执行。

function A有一个参数function B,function B会在function A执行完成之后被调用执行。

三. 回调函数的使用方法

代码如下:

function a(callbackFunction){
alert(“这是parent函数a”);
var m =1;
var n=3;
return callbackFunction(m,n);
}
function b(m,n){
alert(“这是回调函数B”);
return m+n;
}
$(function(){
var result = a(b);
alert("result = "+ result);
});

执行顺序为:

这是parent函数a

这是回调函数B

result = 4

函数首先执行了主题函数a,之后调用了回调函数b,最后返回函数a的返回值。
例:
<!DOCTYPE html>
<html lang=“en”>

<head>
<meta charset=“UTF-8”>
<meta name=“viewport” content=“width=device-width, initial-scale=1.0”>
<title>ES6_数组对象的遍历数组的相关方法</title>
</head>

<body>

</body>
<script type=“text/javascript”>
var arr = [1, 2, 3, 10, 20, 30];
// 遍历数组中的forEach()方法遍历数组中的每个元素,map()方法与forEach()相似
arr.forEach(function (v, index, array) {
console.log(“数组元素:” + v);
console.log(“数组元素对应的索引值::” + index);
console.log(“数组对象:” + array);
})
//遍历数组中的filter()用来筛选数组元素
var newArr = arr.filter(function (value, index) {
return value >= 10;
});
console.log(newArr);
//遍历数组,some()用来判断数组中是否有满足条件的元素,一旦有满足的则返回true,并立刻终止迭代,遍历完数组都没有满足条件的元素则返回false,every()和some()方法相似;
var boolean1 = arr.some(function (value) {
return value >= 10;//是否有大于或等于10的数
});

</script>

</html>


ES5新增的字符串方法

ES5中新增的对象方法

2,Object.defineProperty()定义对象中新属性或修改原有的属性;
Object.defineProperty(obj,prop,descriptor);

@沉木

ES6/02/创建对象,构造函数和原型,原型和原型链,this指向,类,ES5新增的方法,数组方法,回调函数,ES5新增的字符串方法,ES5中新增的对象方法相关推荐

  1. ES6中新增的字符串方法

    实例方法:includes(), startsWith(), endsWith() 传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中.ES6 又提供 ...

  2. javascript中实例对象和构造函数关系、原型语法、原型链、call实现继承、apply调用函数、bind拷贝函数、拷贝继承、class类、super、严格模式、高阶函数、闭包、递归、es6简介

    实例对象和构造函数的关系及原型: 实例对象是通过构造函数创建出来的,实例对象的构造器constructor就是指向构造函数的:每个实例对象中的同一方法的指向是各不相同的,但是其属性值相同的属性可以相同 ...

  3. 构造函数(constructor)与原型链(prototype)关系

    在Javascript中不存在class的概念,它的class概念是通过构造函数(constructor)与原型链(prototype)来实现. 1.构造函数(constructor):创建对象时的初 ...

  4. 构造函数,实例,原型,以及原型链

    1,创建对象的方式: (1)字面量:例如var o1={name:'o1'}: (2)用构造函数创建对象:   var M=function( ){ this.name='o1'} var o2=ne ...

  5. JavaScript中实现继承的方法(深入学习原型链、盗用构造函数、组合继承、原型式继承、寄生式继承、寄生式组合继承)

    一.原型链 原型链的基本思想就是通过原型继承多个引用类型的属性和方法. 构造函数.原型和实例的关系:每个构造函数都有一个原型对象,原型有一个属性指回构造函数,而实例有一个内部指针指向原型. 若原型是另 ...

  6. 分析 js构造函数:对象方法 、类方法 、原型方法

    构造函数方法有对象方法.类方法.原型方法,这些方法在什么时候可以调用,什么时候不能调用,为什么? function Func(name){this.name=name;this.ff=function ...

  7. 【原型模式】原型模式深入分析

    文章目录 1. 原型模式 2.原型模式的应用场景 3. 原型模式的通用写法 3.1 先创建 IProtoType 接口 3.2 创建具体需要克隆的类 3.3 测试代码: 3.3.1 运行结果: 浅克隆 ...

  8. 详解JavaScript创建对象——构造函数模式

    文章目录 一.什么是构造函数? 二.构造函数与普通函数的区别 1.new 2.new.target 三.使用构造函数 四.构造函数的问题 总结 一.什么是构造函数? 在一些面向对象的语言,如Java. ...

  9. 2.5万字详解23种设计模式—创建型模式(简单工厂、工厂方法、抽象工厂、单例-多线程安全详解、建造者、原型)的详细解读、UML类图

    本文简述了各大设计模式,并通过UML和代码详细说明.本文大约共 2.5W 字,建议收藏.下方是本文的目录: 一.设计模式的认识 二.设计模式的分类 根据其目的 根据范围 三.设计模式的优点 四.设计模 ...

最新文章

  1. BZOJ 1589 Trick or Treat on the Farm (tarjan缩点,记忆化搜索)[Usaco 2008 Dec Gold]【BZOJ计划】
  2. 使用vue.js路由踩到的一个坑Unknown custom element
  3. A*算法解决八数码问题 Java语言实现
  4. 20 条非常实用的 Python 代码,建议收藏!
  5. Tree.Panel各项属性
  6. C#AE创建FeatureDataset/创建数据、集要素集
  7. mysql 数据操作,MySQL-数据操作
  8. java mkdir()和mkdirs()区别
  9. linux cd是什么目录,linux-cd命令
  10. C语言调用自定义交换函,C语言函数篇 - personal page of Msingwen - OSCHINA - 中文开源技术交流社区...
  11. python 文本分析教程_Python笔记_第五篇_Python数据分析基础教程_文件的读写
  12. 【2020牛客寒假基础算法训练营】第三场总结
  13. 季节性ARIMA模型【R语言】
  14. 【工控老马】PLC六路抢答器系统设计详解
  15. 在 vue中使用 html5 的 drag和 drop 拖拽功能
  16. Python 数据处理与分析(五) 设计一个高回报的投资组合(投资回报和风险分析)任务 4:马科维茨的均值-方差组合模型
  17. 【冷冻电镜|论文阅读】A feature-guided, focused 3D signal permutation method for subtomogram averaging
  18. Win10 官方版下载地址 windows10 1909微软原版光盘镜像下载
  19. TortoiseGit assume-unchanged的文件怎么恢复
  20. 交换机分布缓存_述说数据中心交换机的重要性能指标——缓存

热门文章

  1. 使用Red Gate Sql Compare 数据库同步工具进行SQL Server的两个数据库的结构比较、同步...
  2. 乌云挂了,知识库的文章却在流传
  3. 请问客户端PC应该如何限制其自动获取IP地址?
  4. 12c weblogic需要输入用户名密码
  5. IB客座主编(三):西门子(中国)有限公司工业业务领域楼宇科技集团杜明轩(Christophe de Maistre)先生...
  6. 【nacos系列】nacos配置中心管理实战
  7. java控制进程_⑨进程控制
  8. 1.C#项目Java化注意事项
  9. LINUX NTP 服务器搭建
  10. Wince6.0应用开发:一、平台搭建