我怎样才能调用我的js构造函数?

时间:2016-08-18 06:34:45

标签: javascript jquery object

我看到一个带有下划线的js函数。所以我尝试这样编写,但我无法调用该函数。为什么js函数只能由_命名?任何人都可以解释这种语法吗?

function Test(){
    var a=1;
    function _(abc){
        console.log(abc);
    } 
}

然后尝试调用该函数但没有任何反应

(new Test()._(dsdf));

2 个答案:

答案 0 :(得分:1)

你的函数在Test之外是不可见的。在你的例子中你创建了一个Test的对象。如果你想在对象上调用一个函数,它必须是对象的一个​​成员。所以你需要在函数中使用'this'。

function Test() {
   var a=1;

   this._ = function(abc) {
      console.log(abc);
   } 
}

new Test()._('aa');

答案 1 :(得分:1)

最初,您必须以调用Test构造函数的方式进行微小更改(请参阅本答案的结尾以了解此更改的必要性)。然后,您必须对定义方式进行重大更改Test以下是更改:

(new Test())._('dsdf');

最初,您可以使用new运算符根据构造函数创建对象。稍后,在此对象上,您调用_方法向其传递字符串'dsdf'



function Test(){
    this._ = function( abc ){
    console.log( abc );
    } 
}

(new Test())._('dsdf');

new Test()._('dsdf');




请注意上面代码段中使用的this。当您使用new运算符调用Test时,在将要创建的对象中,将定义一个名为_的方法,该方法需要一个参数并将该参数输出到控制台。

  

为什么你必须改变Test的定义?

这是必需的,因为在Test的初始定义中,其他人看不到名为_的函数。它在Test的范围内定义,只能通过Test主体内的代码调用它。

可以省略次要更改,因为您可以通过运行代码段轻松注意。但是,在我个人看来,第一个代码更具可读性。此外,如果你已经分离了对象的创建和方法的调用,它将更具可读性,如下所示:

var test = new Test();
test._('dsdf');
相关问题