javascript --- 对象之间的继承

了解这一章之前,先把我们之前讲到的以构造函数创建对象为前提的继承抛到一边。

首先,我们先用一个var o = {}创建一个没有任何属性的空对象作为我们的‘画板’,然互在逐步向这个画板里添加属性,和方法,但这次我们不用this,而是直接将现有的对象属性全部拷贝过来。

如下面一个函数,我们传入一个对象,并返回她的一个副本。

function extendCopy(parent){
    var child = {};
    for(var i in parent){
        child[i] = parent[i];
    }
    child.usber = parent;
    return child;
}

单纯的属性拷贝是一种非常简单的模式,使用范围非常之广。看一下她的实际应用。

首先我们需要一个基本对象:

var her = {
    name : ‘Anna‘,
    sex : ‘women‘,
    toString : function(){
        return this.name;
    }
}

我们只需调用上面的方法,就能返回一个新对象了,我们接着进行扩展:

var his = extendCopy(her);
    his.name = ‘Jock‘;
his.toString = function(){
    return this.usber.toString() + ‘,‘ + this.name;
}

我们在创建一个对象,接着上述的步骤:

var ha = extendCopy(his);
    ha.name = ‘Los‘;
    ha.getArea = function(){
    return this.side * this.height / 2;
}

接着我们来看:

ha.side = 5;
ha.height = 10;

console.log(ha.getArea()); //25
console.log(ha.toString()); // Anna Jock los

这就是简单的属性拷贝了。

时间: 2024-10-09 22:05:55

javascript --- 对象之间的继承的相关文章

js对象之间的继承

js的对象之间的继承抛弃了原型与构造器的概念,而转为字面量对象之间进行属性拷贝的方式进行继承. 首先我们来写一个封装好的继承函数: function extend(parent){ var child={}; for(var i in parent){ child[i]=parent[i]; } child.uber=parent; return child; } 函数有一个实参parent,函数内部新建一个空的子对象,这个子对象就像一个白的画板,逐渐的将父对象上的内容临摹上去.for循环当中是

JavaScript对象创建,继承

创建对象 在JS中创建对象有很多方式,第一种: var obj = new Object(); 第二种方式: var obj1 = {};//对象直面量 第三种方式:工厂模式 function Person(){ var obj = new Object(); obj.name = 'xxx'; obj.age = 12; return obj; } var p1 = Person(); typeof p1 ;// object 第四种方式:构造函数模式 var Person = functio

Javascript面向对象(封装、继承)

Javascript 面向对象编程(一):封装 作者:阮一峰 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). 那么,如果我们要把"属性"(property)和"方法"(method),封装成一个对象,甚至要从原型对象生成一个实例对象,我们应该怎么做呢? 一. 生成实例对象的原始模式 假定我们把猫看成一个对象,它有"名

JavaScript对象与jQuery对象以及DOM对象

今天说一下JavaScript对象与jQuery对象和DOM对象的区别和转换,前面已经见过JavaScript对象的创建,但还是要重提 var variable =                     //这是一个JavaScript对象 var $variable = $()             //这就是个jQuery对象 var variable = document.get...                   //这是一个DOM对象,方法包括getElementById(

javascript之构造函数的继承(引用网络)

这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = "动物"; } 还有一个"猫"对象的构造函数. function Cat(name,color){ this.name = name; this.color = col

javascript中的对象之间继承关系

相信每个学习过其他语言的同学再去学习JavaScript时就会感觉到诸多的不适应,这真是一个颠覆我们以前的编程思想的一门语言,先不要说它的各种数据类型以及表达式的不同了,最让我们头疼,恐怕就是面向对象的部分了,在JavaScript中,是没有给定一个创建对象的关键词的,它不像Java中一个class就可以创建一个对象,在JavaScript中,对象是一个十分松散的的key-value对的组合,通常,我们在创建对象时,可以通过{}来直接生成一个对象,就像我们之前所学的,对象中有属性,有行为,这里我

javascript对象创建及原型继承的研究

今天总结了下javascript关于原型继承和对象创建方面的东西,因为javascript的原型继承在使用传统面向对象语言开发的同学看来比较怪异,原型继承确实比传统OOP语言的继承理解和运用起来困难一些,当然个人觉得传统OOP的继承相对比较简单,因为中规中矩. 下面逐个的用示例说明javascript中对象创建方式,专业一点叫什么模式,主要有直接单个创建:工厂模式:提出方法类函数公用方式:构造函数模式:构造函数+原型方式:使用原型本质的方式构建(这种受过李站的<悟透javascript>一书的

__x__(79)1016第十五天__ JavaScript 对象的继承

对象的继承 大部分面向对象的编程语言,都是通过“类”(class)实现对象的继承. 传统上,JavaScript 语言的继承不通过 class,而是通过“原型对象”(prototype)实现,称之为 JavaScript 的原型链继承 JavaScript 继承机制的设计思想就是,原型对象 prototype 的所有属性和方法,都能被实例对象共享 ES6 引入了 class 语法 构造函数的缺点 同一个构造函数的多个实例之间,无法共享属性,从而造成对系统资源的浪费 function Cat(na

JavaScript对象 创建对象 继承

创建对象  --以下内容来自JavaScript高级程序设计 工厂模式 用函数来封装以特定接口创建对象的细节. function createPerson(name, age, job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function(){ alert(this.name); }; return o; } var person1 = createPerson("Nichola