理解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(相同的参考),而新的具有关键性的作用!
以上就是这篇文章的全部内容,希望大家能喜欢。