Effective Javascript 阅读笔记(4)-JavaScript 三种不同的使用模式

在javascript中有三种不同的使用模式,函数调用,方法调用,通过构造函数使用。

1.函数调用

function hello (username) {
    return "hello, " + username;
}
hello("han crewn");//" hello, han crewn"

此段函数的表现与行为一致,调用hello 函数并且将参数传入。

2.方法调用

javascript 中即,对象的属性为函数

var  对象 = { 

   属性名:function() {}

}

var obj = {
  hello: function() {
    return  "hello, " + this.username;
  },
  username: 'han crewn'
};
obj.hello();//" hello, han crewn"

我们可以看到,在上述的例子中通过this变量访问了obj的属性。这是如何实现的?

在方法调用过程中,绑定的this变量成为接收者。表达式obj.hello()在obj对象中查找为hello的属性,并将obj对象作为接收者,然后调用该属性。通常,通过某个对象调用方法则将查找该方法并将该方法作为接收者。我们可以通过下面的例子来协助理解。

var obj2 = {
  hello: obj.hello,
  username: 'boo ranll'
};
obj2.hello();//" hello, boo ranll"

但是需要注意一点,普通的函数是不能直接引用this变量的。

function hello() {
    return  "hello, " + this.username;
  },
var obj = {
  hello: hello,
  username: 'han crewn'
};
var obj2 = {
  hello: hello,
  username: 'boo ranll'
};
obj.hello();//" hello, han crewn"
obj2.hello();//" hello, boo ranll"
hello();//"hello, undefined"

 3.构造函数使用

function User (name, password) {
  this.name = name;
  this.password = password;
}
//使用new 操作符来调用
var u = new User('user', '7eywuca');
u.name;//'user'

与函数调用不同的是,构造函数调用将一个全新的对象作为this变量的值,并隐式返回这个新对象作为调用结果。

三种方式在接收者上有明显的不同之处

  • 函数调用将全局作为接收者,一般很少使用函数调用来调用方法。
  • 方法调用将被查找方法属性的对象作为调用接收者。
  • 构造函数需要通过new运算符调用,并产生一个新的对象作为接收者。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值