search

Home  >  Q&A  >  body text

function - javascript函数中的括号()问题

function t1(){
this.name="dog";
this.age=1;
}
function t2(){
this.color="red";
}

t1.prototype=new t2();
为什么不是t1().prototype=new t2();

在这个函数中t1t1()具体指什么啊?
t1是指这个函数对象?t1()是执行这个函数?

伊谢尔伦伊谢尔伦2894 days ago279

reply all(3)I'll reply

  • 高洛峰

    高洛峰2017-04-10 15:25:30

    想深入这个问题就要去了解原型链了:http://weizhifeng.net/javascript-the-core.html

    t1.prototype=new t2();是javascript实现继承的一种方式。
    t1是函数对象,t1()是执行函数,其值是函数返回的值,本题t1()返回的是undefined

    构造函数1.prototype = new 构造函数2();这句的结果就是,以后通过new 构造函数1创建的对象继承了构造函数2的相关属性方法。就是这么用的。

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 15:25:30

    一个是函数引用,一个是函数执行后的的值。

    function demo(){
        console.log('this is demo');
    }
    
    demo   ==> 得到demo函数
    demo() ==> 得到并执行demo函数 打印 'this is demo'
    

    举个通俗的例子,你去餐厅吃饭,拿到一个小票

    小票 就是函数指针
    饭 就是函数执行的结果

    如果你不拿小票,就取不到饭,但是你光拿着小票不去取饭也是一样不会得到饭。

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:25:30

    比如var a=function(){alert(1)};
    对于上面这段代码,如果console.log(a);其实返回的是这个函数本身,
    如果console.log(a());返回的就是调用这个函数后的结果了

    reply
    0
  • Cancelreply