передача this.
var obj = { value:1, fn: function() { (function(){ this.value = 223; }).call(this); } } obj.fn(); console.log(obj.value) var start = +new Date(); for(var i = 0; i < 2000000; i++) { obj.fn(); if(i == 1999999) console.log(+new Date() -start) } call(this) быстрее чем передача this через переменную, в crhome на 100 мс. apply медленнее на 200 за call. bind медленнее всех больше чем 100 раз. задаюсь вопросом почему в скриптах часто встречаю передачу через переменную that . может я плохо проводил тесты , кому интересно попробуйте у себя и напишите как у вас |
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
var obj = { val: 1, fn: function (callback) { return callback.call(this); } } например так |
в ie8 call медленнее на 100мс ,при затрате на вызов функции 2 ляма раз.
|
Цитата:
различными методами, какие занимают разное время априори Цитата:
а чтоб сравнивать передачу this: Цитата:
|
Цитата:
var obj = { val: 1, fn: function (callback) { return callback(); } } Я имел в виду такое: var storage = { getData: function() { var that = this; $.get("data.php", function(response) { that.data = response; } } } |
да тут никак не передать , я тебе говорю про код с замыканиям , часто передают this через переменную , как на меня передача через call более
читаемо ! |
Более читаемо - это использовать ES6.
var obj = { method() { (() => { var x = 10; console.log(this == obj); //true })(); console.log(typeof x); //undefined } } Или даже так: var obj = { method() { { let x = 10; console.log(this == obj); //true } console.log(typeof x); //undefined } } |
Часовой пояс GMT +3, время: 19:48. |