ES5-面向对象
一:栈和堆内存空间
var a = 10;
var b = a;
a++;
console.log(a)
console.log(b)
var aa = {};
var bb = aa;
aa.name = '一起改变';
console.log(aa);
console.log(bb);
二:值相等== 和全等 ===
var a1 = new String('123');
var a2 = String('123');
var a3 = '123';
a1 == a2
a1 ===a2
a2==a3 a2===a3
var b1 = new String('123');
var b2 = new String('123');
console.log(b1 == b2)
JSON.stringify(b1) == JSON.stringify(b2)
三:值传递核对引用传递
var num = 50;
function add(n) {
n = 100;
}
add(num);
console.log(num);
var arr = [10, 20, 30];
function add2(arr) {
console.log(arguments)
arr[0] = 99;
}
add2(arr);
console.log(arr);
四:对象的定义
var obj1 = new Object();
obj1 .name = "小明";
obj1.sleep = function () {
console.log(this.name + "在睡觉");
};
var obj2 = {};
obj2.name = 'alney';
obj2.age = '10';
var mnk = 'name2';
obj2[mnk] = 'Alice';
var per01 = {
name: 'laney',
age: '10',
action: function () {
console.log('run')
}
}
function createPerson(name, age) {
var obj = new Object()
obj.name = name;
obj.age = age;
obj.action = function () {
console.log('run')
}
return obj;
}
var c1 = createPerson('hong', 20)
var c2 = createPerson('ming', 30)
function Person(name, age) {
this.name = name;
this.age = age;
this.action = function () {
console.log('run' + this.name)
}
}
var p1 = new Person('laney', 20)
五:原型链
var pm = {
name: 'alice'
};
var newpm = Object.create(pm)
newpm.__proto__ === pm