JavaScript檢測實例屬性, 原型屬性
0.前提
JavaScript對象的屬性分為兩種存在形態(tài). 一種是存在實例中, 另一是存在原型對象中.
根據(jù)上述, 檢測屬性的時候會出現(xiàn)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.檢測存在原型的屬性
結(jié)合in操作符和hasOwnProperty()就可以自定義函數(shù)來檢測原型中是否存在給定的屬性.
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).
以上就是本文的全部內(nèi)容了,希望大家能夠喜歡
相關文章
微信小程序?qū)崿F(xiàn)比較功能的方法匯總(五種方法)
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)比較功能的方法,本文給大家列舉出五種方式,每種方法通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03html dom節(jié)點操作(獲取/修改/添加或刪除)
DOM 是關于如何獲取、修改、添加或刪除 HTML 元素的標準,下面為大家介紹下html dom節(jié)點操作,感興趣的朋友可以參考下2014-01-01關于foreach循環(huán)中遇到的問題小結(jié)
這篇文章主要介紹了關于foreach循環(huán)中遇到的問題總結(jié),非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-05-05JavaScript使用indexOf獲得子字符串在字符串中位置的方法
這篇文章主要介紹了JavaScript使用indexOf獲得子字符串在字符串中位置的方法,涉及javascript中indexOf方法操作字符串的技巧,需要的朋友可以參考下2015-04-04