数码资讯
让我学习Javascript的函数调用和构造函数调用。
一、函数调用 函数在Javascript中绝对是最重要的,在Javascript中,函数承担程序、方法、构造函数、甚至类和模块的功能。 在面向对象编程中,函数、方法和类构造函数通常是三种不同的东西,由不同的语法实现,但在Javascript中,这三个概念是通过函数实现的,通过三种不同的模式实现。 最
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
一、函数调用
函数在Javascript中绝对是最重要的,在Javascript中,函数承担程序、方法、构造函数、甚至类和模块的功能。
在面向对象编程中,函数、方法和类构造函数通常是三种不同的东西,由不同的语法实现,但在Javascript中,这三个概念是通过函数实现的,通过三种不同的模式实现。
最简单的使用方式是函数调用:
函数hello(用户名){
返回hello+用户名;
}
你好(Keyser Souml;泽); / /你好,Keyser Souml;泽
二、方法的调用
Javascript中的方法的表达是,对象的属性是一个函数:相同的函数被分配给对象的一个成员。
var obj = { {
你好:函数(){
回到你好,+ this.username;
},
用户名:汉斯
};
Obj.hello(你好,汉斯); / / 格鲁伯
真正的操作是调用本身将决定将绑定到哪个对象,即:
obj1.hello()将它绑定到obj1,和obj2.hello()将它绑定到obj2。记住一句话,谁的电话,这一点谁
由于这个绑定的规则,下面的用法也是可行的:
函数hello(){
回到你好,+ this.username;
}
var obj1 = { {
你好,你好,
用户名:rdon壁虎
};
obj1.hello(你好,rdon); / / 壁虎
var obj2 = { {
你好,你好,
用户名:Biff Tannen
_ };
obj2.hello(你好,比夫); / / 别人
然而,在一个常见的函数,如上面的hello函数中,使用这个关键字不是一个好方法。当它被直接调用,这个方向成为一个问题。在这种情况下,这往往是针对全局对象(globalobject),通常是在浏览器窗口对象。
这种行为是不确定的,毫无意义的。
所以在ES5标准,如果严格的方式进行,那么这将被设置为未定义:
函数hello(){
使用严格;
回到你好,+ this.username;
}
(hello);错误:无法读取属性未定义的用户名
上面的方法是更快地暴露潜在的错误,避免误操作和发现错误。
普通的函数调用和方法调用之间的区别由这个例子定义得很清楚。
函数(){()
警戒(此);
};
var;
o.fn =功能;
比较
警报(o.fn =功能); / /真的
调用
Func();对象窗口}
O.fn(); / / {物}
在这里,操作的结果是,这两个功能是一样的,所以打印的结果是真的。但由于两函数调用不同的函数,调用、打印{对象窗口},和o.fn的打印结果是{物}。
这里是电话和方法之间的差异的函数调用,这指的是全局对象的窗口,并在该法是指当前对象,即o.fn指客体。
三,构造函数的调用
函数的第三种使用方式是用作构造函数:
构造函数中的这个
我们需要分析创建对象的过程,以便我们能够了解这个对象的含义。例如,下面的代码:
var =函数(){()
this.name =小平果;
};
新的人();
在这里,我们首先定义功能人,然后分析整个执行。
程序在执行此语句时不执行函数的主体,因此Javascript解释器不知道函数的内容。
接下来,执行新关键字,创建对象,解释器打开内存,对象的引用,以及新对象对函数的引用。
在执行函数旁边,引用对象引用是给这个的,也就是说,在构造方法中,这是新创建的对象。
然后将成员添加到该对象中,这将向对象添加成员。
最后的函数结束,返回这个,并将这个传递给左边的变量。
在分析构造函数的执行后,您可以得到构造函数中的这个是当前对象。
构造函数中的返回
返回构造函数中的更改,如果构造函数中的第一个返回对象,则返回原始意图。如果返回是非对象,如数字、布尔和字符串,则返回这个(如果没有返回语句),然后返回此。see the following code:
返回一个返回对象
var =函数(){()
this.name =赵小虎;
返回{
姓名:公牛明亮
};
};
创建对象
新的CTR();
访问名称属性
警报(器);
这里的执行代码打印结果是牛光明,因为返回构造函数是一个对象,所以保留返回的含义,返回内容作为返回后面的对象。请看下面的代码:
返回定义的非对象数据构造函数。
var ctr =函数(){()
this.name =赵小虎;
返回公牛光明;
};
创建对象
新的CTR();
使用
警报(P);
警报(器);
代码结果是第一个POP打印{对象对象},然后打印。赵晓虎在这里因为返回的是一个字符串,属于基本类型,然后返回语句是无效的,这是回归。所以第一个打印是{对象},第二个不会打印未定义。
功能的用户(姓名、passwordhash){
this.name =名称;
this.passwordhash = passwordhash;
}
VaR U =新用户(sfalken
0ef33ae791068ec64b502d6cb0191387 );
u.name; / / sfalken
使用新的键,函数被称为构造函数,不同于函数和方法调用,构造函数将引入一个新对象并将其绑定到这个对象,然后返回对象作为构造函数的返回值。构造函数函数的作用是初始化对象。
构造函数调用常犯的错误
下面的构造函数定义得很好:
var编码器=函数(Nick){
this.nick = Nick;
};
构造函数定义的结束是什么那是真的。
VaR编码器=编码器('casper);
这个编码器的兄弟叫什么名字快速打印下来:
console.log(编码器。尼克); / /未定义
=未定义!回顾一下实例化的语句,不难发现问题在哪里:新的更少
VaR编码器=编码器('casper '); / /普通的函数调用,因此内部指针实际指向窗口对象
console.log(窗口。尼克); / /输出:Casper
var =新的编码器(编码器'casper '); / /加上新的,一切都是不同的,这是正确的点来创建当前实例
console.log(编码器。尼克); / /输出:Casper
这种错误似乎很低,但发生的概率是相当高的。是为了避免或减少这种情况的发生而肿起来的吗
内部可以在内部实现。
var编码器=函数(Nick){
如果(!(这是编码器)){
返回新编码器(Nick);
}
this.nick = Nick;
};
事实上,这很简单。实例化时,可以根据内部判断判断指向的对象的类型。如果当前构造函数的类型不是,则必须再次调用构造函数。
突然觉得名字的编码器是不够的我想用黑客,好吧,我把它换了。一共换了三个,这是不科学的,有没有办法只改变构造函数的名称
当然,有:
var编码器=函数(Nick){
如果(!(这是争论。被叫方)){
返回新的arguments.callee(Nick);
}
this.nick = Nick;
};
提示:这是说,arguments.callee将ES 5严格模式下禁止,但只有当ES 5推广,指定严格的模式,否则,你仍然可以使用发散思维。
这是本文的全部内容,我希望能帮助您学习函数调用、方法调用和构造函数调用。
函数在Javascript中绝对是最重要的,在Javascript中,函数承担程序、方法、构造函数、甚至类和模块的功能。
在面向对象编程中,函数、方法和类构造函数通常是三种不同的东西,由不同的语法实现,但在Javascript中,这三个概念是通过函数实现的,通过三种不同的模式实现。
最简单的使用方式是函数调用:
函数hello(用户名){
返回hello+用户名;
}
你好(Keyser Souml;泽); / /你好,Keyser Souml;泽
二、方法的调用
Javascript中的方法的表达是,对象的属性是一个函数:相同的函数被分配给对象的一个成员。
var obj = { {
你好:函数(){
回到你好,+ this.username;
},
用户名:汉斯
};
Obj.hello(你好,汉斯); / / 格鲁伯
真正的操作是调用本身将决定将绑定到哪个对象,即:
obj1.hello()将它绑定到obj1,和obj2.hello()将它绑定到obj2。记住一句话,谁的电话,这一点谁
由于这个绑定的规则,下面的用法也是可行的:
函数hello(){
回到你好,+ this.username;
}
var obj1 = { {
你好,你好,
用户名:rdon壁虎
};
obj1.hello(你好,rdon); / / 壁虎
var obj2 = { {
你好,你好,
用户名:Biff Tannen
_ };
obj2.hello(你好,比夫); / / 别人
然而,在一个常见的函数,如上面的hello函数中,使用这个关键字不是一个好方法。当它被直接调用,这个方向成为一个问题。在这种情况下,这往往是针对全局对象(globalobject),通常是在浏览器窗口对象。
这种行为是不确定的,毫无意义的。
所以在ES5标准,如果严格的方式进行,那么这将被设置为未定义:
函数hello(){
使用严格;
回到你好,+ this.username;
}
(hello);错误:无法读取属性未定义的用户名
上面的方法是更快地暴露潜在的错误,避免误操作和发现错误。
普通的函数调用和方法调用之间的区别由这个例子定义得很清楚。
函数(){()
警戒(此);
};
var;
o.fn =功能;
比较
警报(o.fn =功能); / /真的
调用
Func();对象窗口}
O.fn(); / / {物}
在这里,操作的结果是,这两个功能是一样的,所以打印的结果是真的。但由于两函数调用不同的函数,调用、打印{对象窗口},和o.fn的打印结果是{物}。
这里是电话和方法之间的差异的函数调用,这指的是全局对象的窗口,并在该法是指当前对象,即o.fn指客体。
三,构造函数的调用
函数的第三种使用方式是用作构造函数:
构造函数中的这个
我们需要分析创建对象的过程,以便我们能够了解这个对象的含义。例如,下面的代码:
var =函数(){()
this.name =小平果;
};
新的人();
在这里,我们首先定义功能人,然后分析整个执行。
程序在执行此语句时不执行函数的主体,因此Javascript解释器不知道函数的内容。
接下来,执行新关键字,创建对象,解释器打开内存,对象的引用,以及新对象对函数的引用。
在执行函数旁边,引用对象引用是给这个的,也就是说,在构造方法中,这是新创建的对象。
然后将成员添加到该对象中,这将向对象添加成员。
最后的函数结束,返回这个,并将这个传递给左边的变量。
在分析构造函数的执行后,您可以得到构造函数中的这个是当前对象。
构造函数中的返回
返回构造函数中的更改,如果构造函数中的第一个返回对象,则返回原始意图。如果返回是非对象,如数字、布尔和字符串,则返回这个(如果没有返回语句),然后返回此。see the following code:
返回一个返回对象
var =函数(){()
this.name =赵小虎;
返回{
姓名:公牛明亮
};
};
创建对象
新的CTR();
访问名称属性
警报(器);
这里的执行代码打印结果是牛光明,因为返回构造函数是一个对象,所以保留返回的含义,返回内容作为返回后面的对象。请看下面的代码:
返回定义的非对象数据构造函数。
var ctr =函数(){()
this.name =赵小虎;
返回公牛光明;
};
创建对象
新的CTR();
使用
警报(P);
警报(器);
代码结果是第一个POP打印{对象对象},然后打印。赵晓虎在这里因为返回的是一个字符串,属于基本类型,然后返回语句是无效的,这是回归。所以第一个打印是{对象},第二个不会打印未定义。
功能的用户(姓名、passwordhash){
this.name =名称;
this.passwordhash = passwordhash;
}
VaR U =新用户(sfalken
0ef33ae791068ec64b502d6cb0191387 );
u.name; / / sfalken
使用新的键,函数被称为构造函数,不同于函数和方法调用,构造函数将引入一个新对象并将其绑定到这个对象,然后返回对象作为构造函数的返回值。构造函数函数的作用是初始化对象。
构造函数调用常犯的错误
下面的构造函数定义得很好:
var编码器=函数(Nick){
this.nick = Nick;
};
构造函数定义的结束是什么那是真的。
VaR编码器=编码器('casper);
这个编码器的兄弟叫什么名字快速打印下来:
console.log(编码器。尼克); / /未定义
=未定义!回顾一下实例化的语句,不难发现问题在哪里:新的更少
VaR编码器=编码器('casper '); / /普通的函数调用,因此内部指针实际指向窗口对象
console.log(窗口。尼克); / /输出:Casper
var =新的编码器(编码器'casper '); / /加上新的,一切都是不同的,这是正确的点来创建当前实例
console.log(编码器。尼克); / /输出:Casper
这种错误似乎很低,但发生的概率是相当高的。是为了避免或减少这种情况的发生而肿起来的吗
内部可以在内部实现。
var编码器=函数(Nick){
如果(!(这是编码器)){
返回新编码器(Nick);
}
this.nick = Nick;
};
事实上,这很简单。实例化时,可以根据内部判断判断指向的对象的类型。如果当前构造函数的类型不是,则必须再次调用构造函数。
突然觉得名字的编码器是不够的我想用黑客,好吧,我把它换了。一共换了三个,这是不科学的,有没有办法只改变构造函数的名称
当然,有:
var编码器=函数(Nick){
如果(!(这是争论。被叫方)){
返回新的arguments.callee(Nick);
}
this.nick = Nick;
};
提示:这是说,arguments.callee将ES 5严格模式下禁止,但只有当ES 5推广,指定严格的模式,否则,你仍然可以使用发散思维。
这是本文的全部内容,我希望能帮助您学习函数调用、方法调用和构造函数调用。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。