首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hasOwnProperty -原型-不工作

hasOwnProperty -原型-不工作
EN

Stack Overflow用户
提问于 2016-05-14 05:40:43
回答 6查看 1.1K关注 0票数 0

我正在尝试排除属性c,这样它就不会被添加到属性数组中,然而,它仍在添加中。为什么?

代码语言:javascript
复制
var letters = function () {
  this.a = 5;
  this.b = 20;
};

letters.prototype = {
  c: 10
};

var letters = new letters();

function looping(obj) {
  var properties = [];
  for (var key in obj) {
    if (!obj.hasOwnProperty("c")) {

      properties.push(key);
    }
  }
  return properties;

}

looping(letters);
EN

回答 6

Stack Overflow用户

发布于 2016-05-14 05:47:43

我将!obj.hasOwnProperty("c")更改为obj.hasOwnProperty(key)。这将显示不只属于原型的属性(我认为这是您使用obj.hasOwnProperty的目标)。如果像其他一些答案假设的那样,您的目标是只排除属性"c",那么您可以将If condition更改为if ( key !== "c" )

代码语言:javascript
复制
var letters = function () {
  this.a = 5;
  this.b = 20;
};

letters.prototype = {
  c: 10
};

var letters = new letters();

function looping(obj) {
  var properties = [];
  for (var key in obj) {
    if (obj.hasOwnProperty(key)) {

      properties.push(key);
    }
  }
   return properties;

}

 looping(letters);
票数 2
EN

Stack Overflow用户

发布于 2016-05-14 05:47:09

我想你想说的是这样的

代码语言:javascript
复制
var Letters = function() {
  this.a = 5;
  this.b = 20;
};

Letters.prototype = {
  c: 10
};

var letters = new Letters();

function looping(obj) {
  var properties = [];
  for (var key in obj) {
    if (key !== "c") {

      properties.push(key);
    }
  }
  return properties;

}

alert(looping(letters));

还应将构造函数字母更改为Letters,并使用大写"l",并且构造函数和实例不要使用相同的名称

票数 1
EN

Stack Overflow用户

发布于 2016-05-14 05:47:37

目前,您总是在检查您的对象是否有自己的属性c。由于c在您的letters实例的原型链中(顺便说一句,您用它覆盖了您的函数引用!),因此此检查将始终导致false

我不能完全确定您是只想在原型链上明确排除c,还是想从原型中排除所有属性?我将假设以下代码中的第一个选项:

代码语言:javascript
复制
var Letters = function () {
  this.a = 5;
  this.b = 20;
};

Letters.prototype = {
  c: 10
};

var myLetters = new Letters();

function looping(obj) {
  var properties = [];
  for (var key in obj) {
    if (key !== 'c' || obj.hasOwnProperty(key)) {
      properties.push(key);
    }
  }
  return properties;

}

looping(myLetters);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37219742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档