Javascript-Object.getOwnPropertyNames不显示构造函数属性
Javascript - Object.getOwnPropertyNames Does Not Show Constructor Property
为什么"numMyNumber"没有出现在Object.getOwnPropertyNames中?
在Firefox中使用FireBug控制台。
"use strict";
// MyFunction
function MyFunction() {
var numMyNumber = 10;
return numMyNumber;
}
// ["prototype", "length", "name", "arguments", "caller"]
// Why does numMyNumber not appear?
console.log(Object.getOwnPropertyNames (MyFunction));
// 10
console.log(MyFunction());
numMyNumber
是局部变量
它不是函数的属性。
要创建函数的属性,您需要在函数上创建属性,就像任何其他对象一样:
MyFunction.someProperty = 42;
请注意,函数的属性对于特定调用来说并不是本地的。
// MyFunction
function MyFunction() {
this.numMyNumber = 10;
return this.numMyNumber
}
// ["prototype", "length", "name", "arguments", "caller"]
// Why does numMyNumber not appear?
alert(Object.getOwnPropertyNames ( new MyFunction));
// 10
alert(MyFunction());
1) 您需要使用this使变量成为属性
2) 您需要使用new来创建一个新的类实例
澄清其他答案;函数声明、函数创建的实例和函数的原型之间存在差异。我希望以下代码将证明:
//declararion:
function Person(name){
this.name=name
}
// sayName is a method of a person instance like jon.sayName
Person.prototype.sayName=function(){
console.log("Hi, I'm "+Person.formatName(this.name));
};
// static property of Person to format name
Person.formatName=function(name){
return name.toLowerCase().replace(/'b'w/g,function(){
return arguments[0].toUpperCase();
});
};
// now we create an instance of person
var jon = new Person("jon holt");
jon.sayName();//=Hi, I'm Jon Holt
// next line's output:
//["prototype", "formatName", "length", "name", "arguments", "caller"]
console.log(Object.getOwnPropertyNames(Person));
// name in Person isn't the same as name in jon
console.log(Person.name);//=Person
// next line's output: ["name"], name here would be jon holt
console.log(Object.getOwnPropertyNames(jon));
// next line's output: ["constructor", "sayName"]
console.log(Object.getOwnPropertyNames(Person.prototype));
以下是使用函数构造函数、原型和继承的一些方法的链接:原型继承-编写
相关文章:
- 正在重置原型对象的构造函数属性
- 如何将新的构造函数属性推送到数组
- 通过构造函数属性和运算符实例设置继承
- 角度表达式无法使用构造函数属性分辨变量类型
- Javascript“构造函数”属性中的错误 - IE 8
- 构造函数属性值应该是什么 .a 原型构造函数或对象构造函数本身
- 在JavaScript中引用子构造函数中的父构造函数属性
- instanceof和构造函数属性之间的差异
- JS中的prototype和构造函数属性
- 为什么每个javascript对象都有构造函数属性
- Javascript-Object.getOwnPropertyNames不显示构造函数属性
- Javascript中的构造函数属性是什么?
- Javascript -为什么要循环?(原型属性->构造函数属性->函数对象->构造函数属性)
- 在Javascript中构造函数属性是否有很好的用例?
- RegExp构造函数属性输入
- 对象'的构造函数属性被省略
- Javascript构造函数属性在事件被调用后变为未定义
- 函数的原型属性如何影响对象的构造函数属性
- 理解javascript中的构造函数属性
- JavaScript构造函数属性不能被识别