<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
// 1 {}
var a = {};
a.name = "john";
a.age = 22;
a.sayHello = function(){
console.log(this.name);
}
a.sayHello();
console.log(a.name + "," + a.age);
// 2 new Object()
var b = new Object();
b.name = "jx";
b.age = 21;
b.sayHello = function(){
console.log(this.name + "," + this.age);
}
b.sayHello();
console.log(typeof b)
console.log(b instanceof Object)
// 3 字面量
var person = {
name:"pd",
age:20,
sayHello:function(){
console.log(this.name + "," + this.age);
}
}
person.sayHello();
console.log(typeof person);
// 4 工厂模式
function obj(name,age){
var a = new Object;
a.name = name;
a.age = age;
a.sayHello = function(){
console.log(this.name + "," + this.age)
}
return a
}
var a1 = obj("nv",25);
var a2 = obj("sd",28);
a1.sayHello();
a2.sayHello();
// 5 构造函数创建
function Person(name,age){
this.name = name;
this.age = age;
this.sayHello = function(){
console.log(this.name + "," + this.age);
}
}
var person2 = new Person("mv",29);
var person3 = new Person("be",30);
person2.sayHello();
person3.sayHello();
console.log(typeof person2,typeof person3);
console.log(person2.sayHello === person3.sayHello)
// 没解决方法共享问题
// 6 原型模式创建
function Animal(){};
Animal.prototype.name = "sdf";
Animal.prototype.age = 23;
Animal.prototype.sayHello = function(){
console.log(this.name + "," + this.age);
}
var animal1 = new Animal();
var animal2 = new Animal();
animal2.name = "bsdb"
animal1.sayHello();
animal2.sayHello();
console.log(typeof animal1,typeof animal2);
console.log(animal1.sayHello === animal2.sayHello);
// 6-1 原型模式2
function Animal1(){};
Animal1.prototype = {
name:"sadf",
friends:['car','dog'],
age:56,
sayHello:function(){
console.log(this.name + ',' + this.age + ',' + this.friends);
}
}
var animal3 = new Animal1();
var animal4 = new Animal1();
animal3.friends.push('snake');
animal4.friends.push('sheep');
animal4.name = "xcv";
animal3.name = "bnf";
console.log(animal3.friends)
console.log(animal4.friends)
animal3.sayHello();
animal4.sayHello();
//如果里面有引用类型friend 则改一个全改
// 原型+构造函数
function Power(name,age){
this.name = name;
this.age = age;
this.friends = ['car','bus'];
}
Power.prototype.sayHello = function(){
console.log(this.name + ',' + this.age + ',' + this.friends)
}
var power = new Power('bcb',56);
var power1 = new Power('nbgh',89);
power.friends.push('caps');
power1.friends.push('faker')
power.sayHello();
power1.sayHello();
console.log(power.friends)
console.log(power1.friends)
</script>
</body>
</html>