理解Javascript中的原型和原型链

原型

众所周知,Javascript不包含传统的类继承模型,而是使用原型原型模型。




函数学生(名称){
this.name =名称;
}

Var Kimy =新学生(劲美);

student.prototype.say =函数(){
console.log(this.name +说);
}

Kimy.say();
/ / kimysay






劲美本身没有说的方法。当他不在自己的对象,找到这个方法,他回到了他的原型,就是看它在劲美的对象找到。在这里我们使用一个构造函数的学生

构造函数,__proto__,和原型链

除了IE浏览器,其他浏览器部署一个非标准的__proto__属性(两强调前后)的对象实例,指向的对象的原型对象,即构造函数的原型属性。

盗用一段代码和图形




构建方法
函数富(y){
这个,y = y;
}

原型,x=10;

计算继承方法
foo.prototype.calculate =函数(z){
返回这个;
};

使用富模式创建B和C
var =新富(20);
var =新富(30);

方法调用继承
b.calculate(30 / 60);
c.calculate(40 / 80);


Console.log(

b.__proto__ = foo.prototype /真的
c.__proto__ = foo.prototype /真的

b.constructor = foo /真的
c.constructor = foo /真的
foo.prototype.constructor = foo /真的

b.calculate = b.__proto__计算 /真实。
b.__proto__计算= foo.prototype.calculate /真实。

);





我们可以看到,每个对象都包含一个__proto__财产,foo B B __proto__点施工方法施工的原型;和foo.prototype是有__proto__建立对象的原型构建方法的一个对象。对象。原型的__proto__指向空,形成一个原型链。

这里有一段代码要理解。


对象实例的功能
/真
函数是对象
/真


新做了什么

这里还有一个小问题。在js中,普通函数和构造函数之间没有太大的差别。(初始字母大写不是必要的,但通常使用构造函数的首字母缩写)。

例子

Var Kimy =新学生();



新做了三件事


Var Kimy = { };

__proto__ = student.prototype劲美;

student.call(劲美);



1。定义了一个空对象。

2。建立原型

三.初始化对象

所以你可以理解为什么劲美。__proto__指向Student.prototype(相同的参考),而新的具有关键性的作用!

以上就是这篇文章的全部内容,希望大家能喜欢。