Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!

свойство prototype… перестаёт быть ссылкой и становится объектом
/*А при таком подходе B.prototype = {constructor:B, x:10, y:20}; добавления свойств в прототип
с экземпляром ничего не происходит*/
{} создаёт объект, и что x = { a: 5 }; это то же самое, что x = new Object(); x.a = 5; и так далее по всему тексту такие ляпы, которые на самом деле только запутывают.свойство prototype… перестаёт быть ссылкой и становится объектом
Свойство не может быть ссылкой или объектом. Значение свойства может быть примитивным значением (необернутые числа, строки) или ссылкой на объект.
var obj = {value:'objValue'};
function operation(arg) {
console.log('source operation() arg --------');
console.log(arg);
console.log('arg === obj? ------------------');
console.log(arg === obj);
arg = {value:'argValue'};
console.log('new operation() arg -----------');
console.log(arg);
}
console.log(' source obj -------------------');
console.log(obj);
operation(obj);
console.log('obj after operation() ---------');
console.log(obj);
a={a:5}
!function(a) {a.a=4}(a);
alert(a.a);
Прежде чем закончить обсуждение темы выполнения операций над объектами и массивами по ссылке, добавим немного ясности. Фраза «передача по ссылке» может иметь несколько смыслов. Для некоторых из вас эта фраза означает такой способ вызова функции, который позволяет изменять эти значения внутри функциии наблюдать эти изменения за ее пределами. Однако данный термин трактуется в этой книге в несколько ином смысле. Здесь просто подразумевается, что функции передается ссылка на массив или объект, но не сам объект. Функция же с помощью этой ссылки получает возможность изменять свойства объекта или элементы массива, и эти изменения сохраняются по выходе из функции. Те из вас, кто знаком с другими трактовками этого термина, могут заявить, что объекты и массивы передаются по значению, правда, этим значением фактически является ссылка на объект, а не сам объект. Пример 3.3 наглядно иллюстрирует эту проблему.
Пример 3.3. Ссылки передаются по значению
// Здесь приводится другая версия функции add_to_totals(). Хотя она не работает,
// потому что вместо изменения самого массива она изменяет ссылку на этот массив.
function add_to_totals2(totals, x)
{
newtotals = new Array(3);
newtotals[0] = totals[0] + x;
newtotals[1] = totals[1] + x;
newtotals[2] = totals[2] + x;
totals = newtotals; // Эта строка не оказывает влияния
// на массив за пределами функции
}
сфегали по значению?вам все таки стало стыдно.
function modify(obj) { obj.foo = 'Bar' }
o = { foo: 'Foo'}
o.foo == 'Foo'
modify(o)
o.foo == 'Bar'
<?php
function operation(&$arg) {
$arg = array('value' => 'secondValue');
var_dump('function val: ', $arg);
}
$arr = array('value' => 'firstValue');
operation($arr);
var_dump('last val: ', $arr);
?>
var abc_call = (function(){
return function(){
return this;
};
}).call("abc");
typeof []
typeof {}
«Сложно о простом». Функции-конструкторы — как объекты,(prototype). Объекты,(__proto__). constructor, ={}, как функция-конструктор new Object()