2014-04-11 7 views
0

Я просто новичок в JavaScript, и я нашел это ключевое слово очень трудно понять для меня. Я знаю, что this зависит от того, как вызывается функция.Это с прототипом в javascript

Код.

MyClass = function() { 
    this.element = $('#element'); 

    this.myValue = 'something'; 

    // some more code 
} 

MyClass.prototype.myfunc = function() { 
    this.element.click(function() { 

    }); 
} 

new MyClass(); 

Мне просто нужно знать, что this обозначает в this.element.click(function() {}

это обозначают ли Myclass? Помогите мне в понимании использования ключевого словав прототипах в JavaScript.

+0

'Myclass' является конструктором. Когда вы создаете из него новый объект, используя 'new',' this' относится к этому новому объекту. – Andy

+0

Брат там больше нет ссылок на ссылку, не получая его информационную информацию правильно. :( – user3517846

+0

Вы можете проверить правильную сторону (Связанная колонка) этого конкретного вопроса. Http://stackoverflow.com/questions/310870/use-of -prototype-vs-this-in-javascript? rq = 1 –

ответ

2

Мне просто нужно знать, что this обозначает в this.element.click(function() {}

Скорее всего, это объект, созданный выражением new MyClass(). Когда вы делаете new MyClass(), механизм JavaScript создает новый объект, назначает MyClass.prototype в качестве базового прототипа объекта, а затем вызывает MyClass с this, указывая на новый объект. Она возвращает этот объект в качестве результата выражения:

var o = new MyClass(); 

На данный момент, если вы:

o.myfunc(); 

... затем в myfunc, this будет равна o.

this является скользкой концепцией в JavaScript, хотя, поэтому я сказал «скорее всего» выше. Больше (в моем блоге):

+0

поэтому, если я вызываю var b = Myclass() .. Тогда это ключевое слово в функции будет b ..right? – user3517846

+1

@ user3517846: Нет, вам нужно 'new' там:' var b = new MyClass(); 'Тогда' this' будет 'b' в вызове, если вы вызываете' myfunc' следующим образом: 'b .myfunc(); ' –

+0

нет, только когда' b = new Myclass(); ' –

Смежные вопросы