2016-05-13 1 views
0

Я пытаюсь понять, почему результат, когда я вызываю функцию ниже, - «нет», потому что свойство c должно существовать. Кто-нибудь знает, почему? Благодаря!!!hasOwnProperty -wont показать свойство, даже если оно имеет свойство

var letters = function() { 
    this.a = 5; 
    this.b = 20; 
    }; 

    letters.prototype = { 
    c: 10 
    }; 

    var letters = new letters(); 

function looping(obj){ 
if (obj.hasOwnProperty(this.c)) { 
console.log("ua"); 
} 
else { 
    console.log("no"); 
} 
} 

цикл (буквы);

ответ

0

Аргумент hasOwnProperty должен быть строкой.

console.log(obj.hasOwnProperty("c") ? "UA" : "no") 

Также вся точка hasOwnProperty является TES, что свойство/не/получен от прототипа, так что тест должен потерпеть неудачу.

+0

Что я хотел бы сделать это: function looping (obj) { \t var properties = []; if (! Obj.hasOwnProperty ("c")) { \t properties.push (ключ); } свойства возврата; } // так что просто надавите на массив свойств, если его не свойство c, тем самым нажав ll свойства, но это конкретное свойство, вот что я пробовал тестировать с hasOwnProperty – learningcoding

+0

@learningcoding huh? Что такое «ключ»? –

+0

Извините, я пропустил включить цикл \t // для (var key in obj) – learningcoding

2

Это не "есть собственная собственность" c. c является частью своего прототипа, поэтому он не является собственностью объекта, который вы тестируете.

По крайней мере, это был бы ответ, если бы вы звонили obj.hasOwnProperty('c'), как вы, вероятно, планировали. То, что вы на самом деле вызываете, составляет obj.hasOwnProperty(window.c), что составляет obj.hasOwnProperty(undefined), что явно false.

 Смежные вопросы

  • Нет связанных вопросов^_^