Страницы

Поиск по вопросам

среда, 15 мая 2019 г.

Чем отличается код javascript?

Объясните пожалуйста, кто знает, чем отличается этот код: function Button() { this.cc = 0; this.clicked = function() { this.cc+=1; console.log('Clicked ' + this.cc); } } От вот этого: function Button() { this.cc = 0; } Button.prototype.clicked = function() { this.cc+=1; console.log('Clicked ' + this.cc); }


Ответ

Внешне - ничем не отличает. Но внутренне, для случая: function Button() { this.cc = 0; this.clicked = function() { cc+=1; console.log('Clicked ' + this.cc); } } (new Button()).clicked != (new Button()).clicked И это реально разные ( почти всегда полностью ) функции, с разным контекстом исполнения, и т.д и т.п... P.S: В принципи, это можно назвать private свойствами: function Button(){ var obj_private = {}, obj_fn = [], obj = this; for( var fn in this ){ if ( typeof this[ fn ] === 'function' ){ obj_fn.push( this[ fn ] ); } }
this.get_private = function (){ if ( ( this == obj ) && ( obj_fn.indexOf( arguments.caller.callee ) != -1 ) ){ return private_obj; } } }
Button.prototype.clicked = function (){ var pr = this.get_private(); pr[ cc ]++; console.log( 'Clicked' + pr[ cc ] ); }

Комментариев нет:

Отправить комментарий