为什么elem.hasOwnProperty()为false

时间:2015-08-14 10:25:21

标签: javascript properties event-handling click

我有一个点击处理程序

e.addEventListener('click', this.Multiply, false);

和一个功能

this.Multiply = function () {
    APi.Multiply(this);
};

和简单的选择元素 所以这会得到Select元素

为什么要运行

this.selectedIndex 

给出值=> 2

但是运行this.getOwnPropertyNames()会抛出错误

this.hasOwnProperty('selectedIndex') - >假的?

1 个答案:

答案 0 :(得分:1)

因为selectedIndex实际上是HTMLSelectElement原型的属性而不是实例属性。要按照自己的意愿进行测试,可以尝试以下方法:

this.__proto__.hasOwnProperty('selectedIndex');

this.constructor.prototype.hasOwnProperty('selectedIndex');

你应该得到预期的结果。

当然,假设您的this实例实际上是您选择的元素。当然给出了这个HTML:

<select id="example"></select>

运行此javascript:

var el = document.getElementById("example");
console.log(el.__proto__.hasOwnProperty('selectedIndex'));

将在控制台上打印为true。