js原型模式

name属性要么是直接在对象上访问到的,要么是通过原型访问到的。因此调用name in person始终都返回true,无论该属性存在于实例还是存在于原型中。hasOwnProperty()只有在实例中才会返回true。

  function hasPrototypeProperty(object, name){

  return !object.hasOwnProperty(name) && (name in object);

}

如果函数返回真,说明原型中有这个属性。否则说明属性在实例中,或者不存在此属性。

function Person(){

  Person.prototype.name = "Nicholas";

  Person.prototype.sayname = function(){

  alert(this.name);

  }

}

var persion = new person();

alert(hasPrototypeProperty(person,name));//true

person.name = "xupen";

alert(hasPrototypeProperty(person,name));//false

posted on 2016-03-06 17:23  与非朋仔  阅读(148)  评论(0编辑  收藏  举报

导航