首頁  >  文章  >  web前端  >  JavaScript偵測實例屬性, 原型屬性_javascript技巧

JavaScript偵測實例屬性, 原型屬性_javascript技巧

WBOY
WBOY原創
2016-05-16 16:16:021033瀏覽

0.前提

JavaScript物件的屬性分為兩種存在形態. 一種是存在實例中, 另一是存在原型物件中.

根據上述, 偵測屬性的時候會出現4種情況

既不存在實例中, 也不存在原型物件
存在實例中, 不存在原型物件中
不存在實例中, 存在原型物件中
既存在實例中, 也存在原型物件中

1.hasOwnPrototype()

hasOwnPrototype()接受一個字串格式的屬性名稱, 如果實例本身存在該屬性(情況2/情況4), 傳回true. 否則, 傳回false(情況1/情況3).

複製程式碼 程式碼如下:

functino Person() {}
Person.prototype.name = 'apple';
var person1 = new Person();
var person2 = new Person();
person1.name = 'banana';
console.log(person1.hasOwnPrototype(name));  //true
console.log(person2.hasOwnPrototype(name));  //false

2.in運算子

in操作符無論屬性是存在實例本身中, 或原型物件中, 就會回傳true(情況2/情況3/情況4); 否則, 回傳false(情況1).

複製程式碼 程式碼如下:

console.log('name' in person1);  //true
console.log('name' in person2);  //true

3.偵測存在原型的屬性

結合in運算子和hasOwnProperty()就可以自訂函數來偵測原型中是否存在給定的屬性.

複製程式碼 程式碼如下:

function hasPrototypeProperty(object, name) {
     return !object.hasOwnPrototype(name) && (name in object);
}
console.log(hasPrototypeProperty(person1, 'name')); //false
console.log(hasPrototypeProperty(person2, 'name')); //true

原型中存在給定屬性, 傳回true(情況3). 否則回傳false(情況1/情況2/情況4).

以上就是本文的全部內容了,希望大家能夠喜歡

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn