您的位置:首页 > Web前端 > JavaScript

JS对象的创建和继承

2012-08-11 10:18 260 查看
一下是 JS 对象的常用的对象创建的集中方式:

<script type="text/javascript">
// 在 javascript 中没有类的概念 只有 对象
/*1:定义对象 基于原有的对象进行扩展
// 事项创建动态给对象添加和删除
var obj = new Object();// object 类中的属性是不可枚举的
obj.name = "zhang san";
obj["age"] = 20; // 动态的给 obj 对象添加 age 属性
alert(obj.name);
alert(obj.age);
delete obj.name; // 删除 属性
alert(obj.name);
alert(obj.age);
obj.sayName = function(name){ // 动态的给 obj 对象添加 方法
this.name = name;
alert(this.name);
}
obj.sayName("lisi");
*/
/*
2: 定义对象的第二种方式
var obj = {username:"zhangsan",password:"12345"};
alert(obj.username);
*/

/*
3:工厂方法 定义对象
function createObject(){
var object = new Object();
object["name"] = "zhangshan";
object.password = "1234";
object.get = function(){
alert(this.name +"," + this.password);
}
return object;
}
var object1 =  createObject();// 通过工厂方法 得到 对象
object1.get();
*/
/* 带参数的 构造
function createObject(username, password){
var object = new Objcet();
object.username = username;
object.password = password;
object.get = function(){
alser(this.username +"," + this.password);
}
}*/
/*让一个函数对象被多个构造函数共享
function get(username, password){
alert(this.username +","+ this.password);
}
function createObject(username, password){
var object = new Object();
object.username = username;
object.password = password;
object.get = get
return object;
}
var  obj = createObject("张三","1234");
obj.get();*/

/*
4:通过 prototype (原型方式) 来实现 对象 构造
prototype 是 object 对象的一个属性
注意:1:单纯的使用原型 prototype 方式构造类 无法在构造函数中对属性进行付初值,
只能在生产对象后进行改变。
2:使用 prototype 构造函数 会使多个对象 共享一份 对象的引用
function Person(){
}
Person.prototype.name = "zhangsan";
Person.prototype.age = 13;
Person.prototype.get = function (){
alert(this.name +"," + this.age);
}
var  person = new Person();
person.get();
person.name = "lisi";
person.get();*/
/*
5:使用 动态原型 prototype 方法,是的 每个 对象拥有自己的属性 但是共享一个方法
function Person(){
this.name = "zhangsan";
this.age = 12;
if( typeof Person.flage == "undefined"){
Person.prototype.getInf = function(){
alert(this.name +"," + this.age);
}
this.flage = true;
}
}
var p1 = new Person(); p1.getInf();
var p2 = new Person(); p2.getInf();
*/
</script>
一下是常用对象的继承方式:

<script type="text/javascript">
/*1: 使用 对象冒充 实现继承
function Parent(username){
this.username = username;
this.sayname = function (){
alert(this.username);
}
}
function Child(username, password){
this.temp = Parent; // 将 父类对象的应用 付给 this.temp
this.temp(username); // 调用构造 方法,此时构造方法 中 的 this 指向的是Child 所以会在 Child 中生成相应对象
delete this.temp;    // 实际上实现了 this的传递
this.password = password;
this.sayPass = function (){
alert(this.password);
}
}
var chirld = new Child("李斯","123");
chirld.sayname();
chirld.sayPass();*/
/*2: 使用 call 实现 继承 call 方法是每个 function 中都存在的方法, call(param1, param2,...);第一个参数
指向的是 调用 call 的this
function Parent(username){
this.username = username;
this.sayname = function (){
alert(this.username);
}
}
function Child(username, password){
Perent.call(this, username);
this.password = password;
this.sayPass(){
}
}
*/
/*3: 使用 apply 实现继承
apply 实现的原理 与 call 一样 只是 apply为 apply(Param1, new Array());
function Parent(username){
this.username = username;
this.sayname = function (){
alert(this.username);
}
}
function Child(username, password){
Parent.apply(this, [username]); // Parent.apply(this, new Array(username));
this.password = password;
this.sayPass(){
}
}
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: