这是什么意思分配一个构造函数的东西?

有时候,我看到这样的事情,我非常不理解:这是什么意思分配一个构造函数的东西?

// ... 

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

回到顶部