原型判斷方法

weixin_34120274發表於2018-09-13

instanceof

A instanceof B //A(例項物件)是不是B(建構函式)的例項
其實就是判斷B(建構函式)的原型物件(prototype),是否在A(例項物件)的原型鏈上
等價於B.prototype.isPrototypeOf(A)

舉個例子:

function B(name, age) {
  this.name = name;
  this.age = age;
}
var A = new B('LL', '24');

console.log(A instanceof B);
// expected output: true

console.log(A instanceof Object);
// expected output: true
13511312-3980d51d52420d54.png
image.png

hasOwnProperty

obj.hasOwnProperty(prop)//這個obj物件是否有自己的prop(屬性)

hasOwnProperty檢測的是自身例項是否有這個屬性,對於繼承的屬性也就是prototype裡面定義的屬性是不屬於自身的屬性

function B(name, age) {
  this.name = name;
  this.age = age;
}
B.prototype.say = this.name;

var A = new B('LL', '24');

console.log(A.hasOwnProperty("name"));
// expected output: true

console.log(A.hasOwnProperty("say"));
// expected output: false

console.log(A.hasOwnProperty('toString'));
// expected output:false
13511312-24f8151a8250cc6b.png
image.png

相關文章