每个函数中都有一个prototype属性,该函数被new操作符用于创建对象,将一个函数的prototype属性指向某个对象,由此形成一条链,称之为原型链。
自由属性和原型属性:
一:当查找一个对象的属性时,JavaScript 会向上遍历原型链,直到找到给定名称的属性为止,到查找到达原型链的顶部 - 也就是 Object.prototype - 但是仍然没有找到指定的属性,就会返回 undefined。
通过对象添加的属性为自有属性。
function Hero(){
this.name="Anna";
}
Hero.prototype.age=23;//向函数的原型中添加属性
var hero=new Hero();
console.log(‘name‘ in hero());//true in判断是否是自由属性
console.log(hero.hasOwnPrototype(‘name‘));//true
console.log(‘age‘ in hero);//true
console.log(hero.hasOwnPrototype(‘age‘));//false
hero.age=30;//自有属性
console.log(hero.hasOwnPrototype(‘age‘));//返回true
二:可以用isPrototypeOf()方法判定一个prototype对象是否是存在于另一个对象的原型链中。返回布尔值。
本文出自 “Web前端技术” 博客,请务必保留此出处http://warmdoll.blog.51cto.com/10881334/1712964
原文:http://warmdoll.blog.51cto.com/10881334/1712964