我應該使用一個嗎?是更好地使用它們嗎?謝謝。obj和obj.hasOwnProperty(prop)和obj [prop]之間的區別?
7
A
回答
19
prop in obj
檢查是否obj
有一個名爲prop
在所有的財產,即使它只是從一個原型繼承。obj.hasOwnProperty(prop)
檢查是否obj
本身擁有一個名爲prop
財產;它忽略了從原型繼承的屬性。obj[prop]
獲取prop
屬性的值。
使用哪一個適合您要完成
注什麼:在這三種情況下,prop
必須是一個字符串。
+0
請問如果obj.prop和obj ['支柱']? SLaks –
0
只給了一個這樣的例子:
var animal = {"legs": 4};
var dog = {"barks" : true};
dog.__proto__ = animal; // JS inheritance (dog inherits from animal)
現在這意味着:
console.log("legs" in dog); // TRUE - due to JS inheritance and since 'in' key looks into inherited prototypes
console.log(dog.hasOwnProperty("legs")); // FALSE
console.log(dog.hasOwnProperty("barks")); //TRUE
打印
true
false
true
注意一兩件事:如果狗有「腿「讓我們說5的屬性(我知道hhmm嚇人),所以'in'操作符(狗的」腿「)將指代」腿「屬性w這是在狗物體中聲明的,而不是來自動物物體的遺傳「腿」。例如:
var animal = {"legs": 4};
var dog1 = {"barks": true};
var dog2 = {"barks": true, "legs": 5};
dog1.__proto__ = animal;
dog2.__proto__ = animal;
console.log(dog1.legs);
console.log(dog2.legs);
console.log("legs" in dog2) // 'in' refer to the un-inherited "legs" of dog2
打印
4
5
true
相關問題
- 1. jQuery中prop()和attr()之間的區別以及何時使用attr()和prop()
- 2. obj1 = obj.clone()和obj1 = obj之間的區別
- 3. JavaScript:Reflect.get()和obj ['foo']之間的區別
- 4. 什麼是Object.Equals(obj,null)和obj == null之間的區別
- 5. iphone中obj = nil和[obj removeFromSuperview]的區別?
- 6. Reflect.ownKeys(obj)和Object.keys(obj)有什麼區別?
- 7. 打印obj和打印obj .__ str __之間的Python區別__()[至少使用Unicode?]
- 8. Obj-C對象和實例之間的區別?
- 9. Obj-C中[object variable]和object.variable之間的區別?
- 10. java - 條件中(obj!= null)和!(obj == null)有什麼區別?
- 11. `Object obj(args ...)`和`Object obj {args ...}`有什麼區別?
- 12. C++ vector - push_back(* new obj())和push_back(obj())有什麼區別?
- 13. 沒有setter的readonly和prop有什麼區別?
- 14. 用於訪問值的語法obj.obj.key和obj [obj] .key之間的區別是什麼?
- 15. 如何解決reset.css/normalize.css和'initial'CSS prop值之間的衝突?
- 16. nhibernate中的Update(Object obj,Object id)和Update(string entity,Object obj)有什麼區別
- 17. 是什麼$ OBJ =「類名」和$的obj =新的類名()
- 18. jQuery .prop()函數不工作(.prop()vs .attr())
- 19. 是否有(應該有)本地js defaultValue和jQuery prop(defaultValue)之間的任何區別?
- 20. 腳本中的jQuery attr和prop組合
- 21. iPhone:你能告訴我區別b/t(NSObject *)obj&(NSObject * obj)
- 22. 'const Obj'和'Obj&'有什麼關係?
- 23. Qt和C++如何轉換Obj&Obj *
- 24. 什麼是@StaticMetamodel和SingularAttribute <Obj,Obj>?
- 25. Jquery change .prop href
- 26. Jquery Get longdesc Prop
- 27. .prop()與.data()
- 28. Stub .prop()with sinon
- 29. javascript obj.onclick和prototype的Event.observe(obj,'click',fn)有什麼區別?
- 30. 之間的〜/和的區別../
[MDN在操作者(https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/in),[MDN hasOwnProperty]( https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/hasOwnProperty),[MDN會員運營商](https://developer.mozilla.org/en/JavaScript/Reference/Operators/Member_Operators) – user113716
更新的鏈接:[MDN在'運營商](https://developer.mozilla.org/en/JavaScript/Reference/Operators/in)。 [MDN'hasOwnProperty'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/HasOwnProperty)。 [MDN會員運算符,括號符號](https://developer.mozilla.org/en/JavaScript/Reference/Operators/Member_Operators#Bracket_notation) –