function t1(){ this.name="dog"; this.age=1; }
function t2(){ this.color="red"; }
t1.prototype=new t2(); 为什么不是t1().prototype=new t2();
t1.prototype=new t2();
t1().prototype=new t2();
在这个函数中t1和t1()具体指什么啊?t1是指这个函数对象?t1()是执行这个函数?
t1
t1()
小伙看你根骨奇佳,潜力无限,来学PHP伐。
想深入这个问题就要去了解原型链了:http://weizhifeng.net/javascript-the-core.html
t1.prototype=new t2();是javascript实现继承的一种方式。t1是函数对象,t1()是执行函数,其值是函数返回的值,本题t1()返回的是undefined。
undefined
构造函数1.prototype = new 构造函数2();这句的结果就是,以后通过new 构造函数1创建的对象继承了构造函数2的相关属性方法。就是这么用的。
构造函数1.prototype = new 构造函数2();
new 构造函数1
构造函数2
一个是函数引用,一个是函数执行后的的值。
function demo(){ console.log('this is demo'); } demo ==> 得到demo函数 demo() ==> 得到并执行demo函数 打印 'this is demo'
举个通俗的例子,你去餐厅吃饭,拿到一个小票
小票 就是函数指针 饭 就是函数执行的结果
如果你不拿小票,就取不到饭,但是你光拿着小票不去取饭也是一样不会得到饭。
比如var a=function(){alert(1)}; 对于上面这段代码,如果console.log(a);其实返回的是这个函数本身, 如果console.log(a());返回的就是调用这个函数后的结果了
想深入这个问题就要去了解原型链了:http://weizhifeng.net/javascript-the-core.html
t1.prototype=new t2();
是javascript实现继承的一种方式。t1
是函数对象,t1()
是执行函数,其值是函数返回的值,本题t1()
返回的是undefined
。构造函数1.prototype = new 构造函数2();
这句的结果就是,以后通过new 构造函数1
创建的对象继承了构造函数2
的相关属性方法。就是这么用的。一个是函数引用,一个是函数执行后的的值。
举个通俗的例子,你去餐厅吃饭,拿到一个小票
小票 就是函数指针
饭 就是函数执行的结果
如果你不拿小票,就取不到饭,但是你光拿着小票不去取饭也是一样不会得到饭。
比如var a=function(){alert(1)};
对于上面这段代码,如果console.log(a);其实返回的是这个函数本身,
如果console.log(a());返回的就是调用这个函数后的结果了