我试图排除属性c,如果找到,所以它不会被添加到属性数组,但是,它仍然被添加。为什么呢?
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);
答案 0 :(得分:2)
我将!obj.hasOwnProperty("c")
更改为obj.hasOwnProperty(key)
。这将显示不属于原型的属性(我假设是使用obj.hasOwnProperty
的目标)。如果像其他一些答案所假设的那样,您的目标是仅排除属性"c"
,则可以将条件更改为if ( key !== "c" )
。
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);
答案 1 :(得分:1)
我认为你想说的是这样的
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",并且不要对构造函数和实例使用相同的名称
答案 2 :(得分:0)
目前,您始终在检查您的对象是否具有拥有属性c
。由于c
位于您的字母实例的原型链中(顺便说一句,您将覆盖您的函数引用!),此检查将始终生成false
。
我不完全确定您是否只想明确排除原型链上的c
,或者是否要从原型中排除所有属性?我将在以下代码中假设第一个选项:
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);
答案 3 :(得分:0)
for
循环将遍历实际对象及其原型中的所有keys
,并且您实际上是通过在{{1}中使用hasOwnProperty
来破坏"c"
否定它。所以obj.hasOwnProperty("c")
根本没有效果。
正确的方法是:
hasOwnProperty
答案 4 :(得分:0)
hasOwnProperty方法不会在原型链中查找属性。而只需在中使用(如'c' in obj
)。
答案 5 :(得分:0)
此处的问题是,您正在检查c
中的obj
是否属于false
中的属性,而obj.hasOwnProperty("c")
始终为function looping(obj) {
var properties = [];
for (var key in obj) {
if(key !== "c") properties.push(key);
}
return properties;
}
,因为您的对象不会有" ownProperty 强>" c据我所知,通过原型功能。由于你否定了def putInExcel(outputt):
i = 1790
while i < 1892:
inputt = str(i) + '.txt' #Making text file name
writefile = open(outputt)
writer = csv.writer(writefile)
with open(inputt) as file: #Separating each word and storing in list
text = file.read().lower()
text = re.sub('[^a-z\ \']+', " ", text)
words = list(text.split())
for word in words:
cnt[word] += 1
for key, count in cnt.iteritems(): #De-dent this block
writer.writerow([key,count]) #Output both the key and the count
writefile.close()
i = i+1
这个表达式,它总是正确的,因此推送你的数组中的每个键。也许你想要这样的东西。
projectData.process - title
projectData.process - description
// etc.