请问javscript的new问题?
new a()
new Array()谁能说说新建对象步骤?
[小弟我买的是javascript权威指南,就是画的是犀牛的书,第五版的]
犀牛说:new运算符用来创建一个新的对象,并调用构造函数初始化它,new是一个一元运算符,出现在构造函数的调用之前.
运算符new首先创建一个新对象,该对象的属性都未被定义,接下来,它将调用特定的构造函数,传递指定的参数,此外还要把新创建的对象传递给关键字this,这样构造函数就可以使用关键字this来初始化新对象,第一句var s=new a()第一步:new 先创建一个空对象,空对象就是没有任何属性.第二步:调用a()构造函数第三步:将第一步创建的空对象传递给this!(注:具体不知道他是怎么传递的,谁能解释解释?).第四步:构造函数使用this来初始化新对象!(注:谁能详细解释解释构造函数是怎么使用this来初始化新对象的?)第五步:返回对象给变量svar a=new Array()这句也是构造函数用this来初始化新对象的.Array()这个构造函数会返回一个object数组对象,由typeof(Array())得知的.那么构造函数先返回数组对象,然后数组对象是怎么用this来初始化新对象的,谁能详细解释一下.
new a()
new Array()谁能说说新建对象步骤?
[小弟我买的是javascript权威指南,就是画的是犀牛的书,第五版的]
犀牛说:new运算符用来创建一个新的对象,并调用构造函数初始化它,new是一个一元运算符,出现在构造函数的调用之前.
运算符new首先创建一个新对象,该对象的属性都未被定义,接下来,它将调用特定的构造函数,传递指定的参数,此外还要把新创建的对象传递给关键字this,这样构造函数就可以使用关键字this来初始化新对象,第一句var s=new a()第一步:new 先创建一个空对象,空对象就是没有任何属性.第二步:调用a()构造函数第三步:将第一步创建的空对象传递给this!(注:具体不知道他是怎么传递的,谁能解释解释?).第四步:构造函数使用this来初始化新对象!(注:谁能详细解释解释构造函数是怎么使用this来初始化新对象的?)第五步:返回对象给变量svar a=new Array()这句也是构造函数用this来初始化新对象的.Array()这个构造函数会返回一个object数组对象,由typeof(Array())得知的.那么构造函数先返回数组对象,然后数组对象是怎么用this来初始化新对象的,谁能详细解释一下.
<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>