我正在尝试一段时间来切换对象的构造函数而我失败了.继续代码将显示我需要的示例.谢谢.
<script type="text/javascript">
function Me(){
this.name = "Dejan";
}
function You(){
this.name = "Ivan";
}
Me.prototype.constructor = You;
somebody = new Me();
alert(somebody.name); // **It gives Dejan, and I am expecting Ivan**
</script>
Run Code Online (Sandbox Code Playgroud)
Rob*_*obG 12
该Me.prototype.constructor物业仅的公共属性Me.prototype,它不是在新的对象或属性名称的分辨率建设任何方式使用.
它唯一模糊的兴趣是它最初引用其原型"属于"的函数,并且我的实例继承它.因为它是一个公共属性,很容易被分配一个新的值或被遮挡,除非你对它和使用它的代码有严格的控制,否则它不是特别可靠.
您无法更改对象的构造函数,但您可以更改构造函数返回的对象的"类型"(如示例中所示)
Me.prototype = new You();
Run Code Online (Sandbox Code Playgroud)
这将导致新的Me()从对象You继承.但是Me()函数中的this.name会掩盖从你继承的那个,所以做这样的事情:
function Me(){
this.name = this.name || "Dejan";
}
function You(){
this.name = this.name || "Ivan";
}
Me.prototype = new You();
somebody = new Me();
alert(somebody.name);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8948 次 |
| 最近记录: |