We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。如果按照字面意思来理解,那么prototype就是通过调用构造函数而创建的那个对象实例的原型对象。--来自红宝石书p147
访问对象的属性时,如果对象没有这个属性,就回去这个对象属性[[prototype]]指向的原型对象去找,而原型对象也可能有原型对象,直到找到属性或者原型对象不存在的时候,这样的一层关系就是原型链;
__proto__
所有引用类型默认都继承了 Object,而 这个继承也是通过原型链实现的。大家要记住,所有函数的默认原型都是 Object 的实例,因此默认原 型都会包含一个内部指针,指向 Object.prototype。这也正是所有自定义类型都会继承 toString()、 valueOf()等默认方法的根本原因。
instance instanceof Object
var obj = new Object() function Person(){ } var p1 = new Person() var obj = new Object() function Person(){ } var p1 = new Person() console.log(p1 instanceof Object)//true console.log(Object.prototype.isPrototypeOf(p1))//true
function SuperType(){ this.property = true; } SuperType.prototype.getSuperValue = function(){ return this.property; }; function SubType(){ this.subproperty = false; } //继承了 SuperType SubType.prototype = new SuperType(); SubType.prototype.getSubValue = function (){ return this.subproperty; }; var instance = new SubType(); console.log(instance); //true
注:图片来源红宝石书P163
The text was updated successfully, but these errors were encountered:
No branches or pull requests
原型
原型链
访问对象的属性时,如果对象没有这个属性,就回去这个对象属性[[prototype]]指向的原型对象去找,而原型对象也可能有原型对象,直到找到属性或者原型对象不存在的时候,这样的一层关系就是原型链;
原型获取方式
__proto__
默认原型
确定原型和实例的关系
应用
注:图片来源红宝石书P163
The text was updated successfully, but these errors were encountered: