标签:ace 声明式 方式 += 自身 机制 初始化 obj 特殊
创建对象方式
构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量变量赋初始值,它总与new一起用。
new在执行时做的4件事情
每一个对象都有一个原型,作用是指向原型对象prototype
主要作用可以指回原来的构造函数
// 使用对象方式添加方法要
// 给设置一个指路的不然就都覆盖了,找不到构造函数了
作用:提供一个成员查找机制,或查找规则
每一个构造函数都有一个属性叫原型对象,在原型对象里放方法,new 构造函数可以生成一个实例对象,实例对象都有原型,可以指向构造函数的原型对象,原型对象可以通过constructor指向构造函数,同时原型对象还可以通过原型找到上一级的原型对象,最大的是Object的原型对象,再往上找就是null
当访问一个对象的属性(包括方法)时,首先查找这个对象自身有没有该属性。
如果没有就查找它的原型(也就是__proto__指向的prototype 原型对象)。
如果还没有就查找原型对象的原型(Object的原型对象)。
依此类推一直找到Object 为止(null)。
__proto__对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条路线。
可以通过原型对象,对原来的内置对象进行扩展自定义的方法。比如给数组增加自定义求偶数和的功能。
var arr = [1, 2, 3];
var arr1 = [23, 2, 5];
Array.prototype.sum = function (arr) {
var sum = 0;
arr.forEach(function (element, index) {
sum += element;
});
return sum;
};
console.log(arr.sum);
console.log(arr.sum(arr));
console.log(arr1.sum(arr1));
console.log(Array.prototype);
ES6之前并没有给我们提供extends 继承。我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承。
属性继承
function Father(uname, age) {
this.uname = uname;
this.age = age;
}
function Son(uname, age, score) {
Father.call(this, uname, age);
this.score = score;
}
var obj = new Son('son', 18, 99);
console.log(obj)
console.log(obj.score);
console.log(obj.uname);
call()
fun.call(thisArg, arg1, arg2, ...);
call把父类的this指向子类
thisArg :当前调用函数this 的指向对象
arg1,arg2:传递的其他参数
标签:ace 声明式 方式 += 自身 机制 初始化 obj 特殊
原文地址:https://www.cnblogs.com/itxcr/p/11600181.html