【转】js 关于new的讨论
abcdreamer发布于2009-05-30 17:58:46 - 不错。
函数比对象多的,应该就是prototype、[[Construct]]、[[Call]]。
[[Call]]使函数可以执行,prototype和[[Construct]]为new服务,使可以创建实例。
abcdreamer发布于2009-05-30 18:05:27 -
CODE:
<script>
function f() {}
alert(new f().constructor);
f.prototype = f;
alert(new f().constructor);
delete f.prototype;
alert(new f().constructor);
</script>
dh20156发布于2009-05-31 12:56:50 -
CODE:
<script type="text/javascript">
/*
new操作原理(spiderMonkey引擎下)
*/
var a = function(sA,sH){
var x = "x";
this.a = sA;
this.h = sH;
this.say = function(){alert(this.a+','+x)}
}
a.prototype.hi = function(){alert(this.h)}
var createInstance = function(source){
var p = {}
var args = Array.prototype.slice.call(arguments,1);
source.apply(p,args);
p.__proto__ = source.prototype;
return p;
}
var A = createInstance(a,"A","hi A");
A.say();
A.hi();
</script>
abcdreamer发布于2009-05-31 13:00:20 - 我记得是先关联prototype,然后执行构造函数啊
CODE:
<script>
function f() {
alert(this.a);
}
f.prototype.a = 1;
new f;
</script>

浙公网安备 33010602011771号