关于this

来源:互联网 发布:django和php 编辑:程序博客网 时间:2024/05/21 17:21

严格模式中使用方法重构:

'use strict';var xiaoming = {    name: '小明',    birth: 1990,    age: function () {        function getAgeFromBirth() {            var y = new Date().getFullYear();            return y - this.birth;        }        return getAgeFromBirth();    }};xiaoming.age();  
 // Uncaught TypeError: Cannot read property 'birth' of undefined
原因是this指针只在age方法的函数内指向xiaoming,在函数内部定义的函数,this又指向undefined了!(在非strict模式下,它重新指向全局对象window! NaN


'use strict';var xiaoming = {    name: '小明',    birth: 1990,    age: function () {        var that = this; // 在方法内部一开始就捕获this        function getAgeFromBirth() {            var y = new Date().getFullYear();            return y - that.birth; // 用that而不是this        }        return getAgeFromBirth();    }};xiaoming.age();
我们用一个that变量首先捕获this