<!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>
當前標題:對象創建的幾種方式
網頁網址:http://vcdvsql.cn/article46/peiohg.html
成都網站建設公司_創新互聯,為您提供品牌網站制作、域名注冊、營銷型網站建設、網站收錄、網站策劃、網站排名
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯