读JavaScript语言精粹后部分知识的总结

不同的函数调用方式

方法调用模式

一个函数B是另一个对象A的属性时,通过A.B来调用函数B的方式我们称之为方法调用模式
  A= {
            a:'a vairalbe',
            B: function() {
                //
            }
        }
        A.B();

这种调用模式中,B函数中的this指向调用它的对象,A

函数调用模式

若函数B并非是哪个对象的属性,单纯通过B()来调用,则该方法为函数调用。
 var A = function ()
       {
           var a = 'a variable';
           var B = function() {
               ///
           };
           B();
       };
        A();
在这种情况下,B中的this并不指向其外层函数this变量,而是指向全局对象。这是js语言设计上的一个错误,会为开发带来很多麻烦,有一种方法,来改善这一问题。我们创建一个变量,来手动指向外层函数的this变量。

 myObject.double = function() {
            var that = this;//解决方法
            var helper = function() {
                that.value = add(that.value, that, value);
            };
            helper();
        };
        myObject.double();
        document.writeln(myObject.value);//6

构造器调用模式

由于很多人还是习惯基于类的对象,而js是基于原型的对象,因此js提供了一套类似于基于类的语言的对象构建语法,通过new 关键字创建对象。

Apply调用模式

每个函数都拥有一个自己的apply方法。可通过该方法调用指定函数以及制定this指向的对象。

减少全局变量污染

js中可以随意定义全局变量,但由于它会削弱程序的灵活性,建议尽量少的使用。
其实可以尽量将需要声明为全局变量的变量统一放在一个唯一的全局变量中,这样在满足了需求的同时,还减少了全局变量的使用。
    var MYAPP = {};//唯一的全局变量
        MYAPP.stooge = {
            firstName: 'joe',
            lastName: 'Howard'
        };
        MYAPP.flight = {
            airline: 'Oceanic',
            number: 815,
            departure: {
                IATA:'SYD',
                TIME: '2004-09-22 14:55',
            }
        };

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值