这是什么意思分配一个构造函数的东西?
有时候,我看到这样的事情,我非常不理解:这是什么意思分配一个构造函数的东西?
// ... that.constructor = ...
//...
我虽然constructor属性是不应该被什么东西给分配东西,但返回的属性,其对象是一个实例。我认为.constructor
是一个像.length
这样的属性,用于返回数据的字符串,并不能完全改变。这是真的?
回答:
当创建一个ECMAScript中函数对象,它被赋予一个公共原型属性,它是一个普通的对象,只是使用功能的情况下作为构造函数。该原型对象被赋予一个公共的构造函数属性,该属性是对该函数的引用。从构造函数创建的实例将继承原型的构造函数属性(除非它被实例上的构造函数属性或其更高版本的原型链所掩盖)。
构造函数属性可能会被重新赋值,通常是因为原始原型对象被替换为其他对象。构造函数属性可以设置为任何东西,因此它不被视为特别有用。
关于主机对象的prototye属性(如果他们有一个),请注意他们可以做任何他们喜欢的事情(包括在尝试设置甚至访问它们时抛出错误)。
回答:
据我所知,构造函数将返回创建对象原型的函数。
http://www.w3schools.com/jsref/jsref_constructor_boolean.asp
举例来说,如W3Schools的说:
<script type="text/javascript"> var bool=new Boolean();
document.write(bool.constructor);
</script>
返回结果:
function Boolean() { [native code] }
我从来没有使用过,但我想这是用于调试目的。
回答:
您无法更改所有JavaScript对象实例的构造函数。还有Mozilla的文档中的一个整洁的例子:
function Type(){}; var types = [
new Array, [],
new Boolean, true,
new Date,
new Error,
new Function, function(){},
Math,
new Number, 1,
new Object, {},
new RegExp, /(?:)/,
new String, "test"
];
for(var i = 0; i < types.length; i++){
types[i].constructor = Type;
types[i] = [types[i].constructor, types[i] instanceof Type, types[i].toString()];
};
alert(types.join("\n"));
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/constructor
以上是 这是什么意思分配一个构造函数的东西? 的全部内容, 来源链接: utcz.com/qa/263712.html