读书人

请问个关于js面向对象的有关问题

发布时间: 2013-06-25 23:45:42 作者: rapoo

请教个关于js面向对象的问题
诸位先看看如下代码:


function Class1() {
this.yy = 33;
console.log( this );
}

此时,若直接执行这个函数:

Class1();

将看到控制台输出了window对象,并且查看window对象下也确实看到了yy属性,可以表明此时this指向window对象。
若使用new关键字:

new Class1();

控制台输出了:

{ yy : 33 }

也就是输出了一个Class1实例对象,此时,this指向了Class1的实例对象。
目前,有个疑问就是new操作符究竟是做了什么事情,使得this指向发生了改变?
[解决办法]
new Class1 ->

var anonymity = {};
anonymity.constructor = Class1;
var returnvalue = Class1.apply(anonymity);
returnvalue && (returnvalue..constructor = Class1);
return returnvalue is object? returnvalue : anonymity;

可以这样看(内部机制不知道是不是这样)

从上面可以看出 return 如果有return object的话 return的对象 将代替 new出来的对象
[解决办法]
一是看语法说明
二是看执行结果的反馈(这个是比较真实和重要的)

读书人网 >JavaScript

热点推荐