我正在閱讀Crockford的'JS:The Good Parts'。他有兩個使用這個例子,我不明白爲什麼有一次他使用this
和另一個他使用that
。在這些例子中調用'this'有什麼區別?
第一個例子:
String.method('deentify', function() {
var entity = {
quot: '"',
lt: '<',
gt: '<'
};
return function() {
return this.replace(/&([^&;]+);/g,
function (a, b) {
var r = entity[b];
return typeof r === 'string' ? r : a;
}
);
};
}());
document.writeln('<">'.deentify());
第二個例子:
Function.method('curry', function() {
var args = arguments, that = this;
return function() {
return that.apply(null, args.concat(arguments));
};
});
var add1 = add.curry(1);
document.writeln(add1(6));
爲什麼能夠在第一示例性接入this
直接?這個例子和後面的例子有什麼區別?
什麼是'String.method'或'Function.method' ?! – Mohsen 2012-08-05 08:27:38
而且在你的第一個範例中,立即執行的函數是全局的。嘗試'console.log(function(){console.log(this)}())'。當你不通過範圍時,它將是全球性的。(瀏覽器中的'Window') – Mohsen 2012-08-05 09:11:33
它們是自定義添加的輔助函數,用於將方法添加到指定的原型;即Function.method爲函數原型添加了一個方法,等等。 – Avery 2012-08-07 04:42:54