[JavaScript] 纯文本查看 复制代码
function Person(name, age) {
this.name = name;
this.age = age;
this.sayName = function () {
alert(this.name);
};
}
var person1 = new Person("小四", 24);
var person2 = new Person("张三", 27);[JavaScript] 纯文本查看 复制代码
// 当作构造函数使用
var person = new Person("小四", 24);
person.sayName(); //"小四"
// 作为普通函数调用
Person("张三", 24); // 添加到window
sayName(); //"张三"
[JavaScript] 纯文本查看 复制代码
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName = function() { alert(this.name) }
}
var person1 = new Person("小四", 24);
var person2 = new Person("张三", 27);
person1.sayName()
person2.sayName()
console.log(person1.sayName === person2.sayName); // false[JavaScript] 纯文本查看 复制代码
// 对象
var a = [1,2,3];
var b = [1,2,3];
console.log(a == b); // false
//基本类型:赋值的时候只是值得复制
var a = 5;
var b = a;
b+=3;
console.log(b); // 8
console.log(a); // 5
//对象:赋值不仅是值得复制,而且也是引用的传递
var a = [1,2,3];
var b = a;
b.push(4);
console.log(b); // (4) [1, 2, 3, 4]
console.log(a); // (4) [1, 2, 3, 4]
// 只要在程序当中出现赋值,那必然要在内存中重新生成
var a = [1,2,3];
var b = a;
b = [1,2,3,4];
console.log(b); // (4) [1, 2, 3, 4]
console.log(a); // (3) [1, 2, 3]
// 对象类型比较:值和引用都相同才行
var a = [1,2,3];
var b = [1,2,3];
console.log(a == b); // false
// 把值和引用都给了b,所以结果是true
var a = [1,2,3\];
var b = a;
console.log(a \== b); // true
// 总结:构造函数的问题:每new一次就生成一份,如果要是有上百上千份极大的浪费内存
[JavaScript] 纯文本查看 复制代码
function Person(name, age) {
this.name = name;
this.age = age;
this.sayName = sayName; // 与声明函数在逻辑上是等价的
}
function sayName(){
console.log(this.name);
}
var person1 = new Person("小四", 24);
var person2 = new Person("张三", 27);
person1.sayName() // 小四
person2.sayName() // 张三
console.log(person1.sayName === person2.sayName); // true