js对象之间的继承

js的对象之间的继承抛弃了原型与构造器的概念,而转为字面量对象之间进行属性拷贝的方式进行继承。

首先我们来写一个封装好的继承函数:

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

函数有一个实参parent,函数内部新建一个空的子对象,这个子对象就像一个白的画板,逐渐的将父对象上的内容临摹上去。for循环当中是将父对象中的属性和方法逐个复制给子对象。再将子对象的uber指向父对象,这样调用子对象的uber属性就可以调用父对象的属性和方法了,这相当与java中的super,为什么js当中不用super呢,因为super在js中是保留字,所以采用德语与“super”同义的“uber”来替代。

下面来看看这个函数的实际应用,首先创建一个父对象:

var Shape={
    color:"blue",
    name:"shape",
    getName:function(){
        return this.name;
    }
}

接着我们来实现继承,并扩展和重写子对象的一些方法:

var circle=extend(Shape);
circle.name="circle";
circle.getName=function(){
    return "parentName:"+this.uber.getName()+" childName:"+this.name;
}
circle.getS=function(){
    return this.radius*this.radius*3.14;
}
circle.init=function(radius){
    this.radius=radius;
}

首先使用extend函数实现继承

子对象添加了新的name属性和新的getName方法,还有扩展的getS方法和init初始化方法

getName中this.uber.getName()调用父对象的getName()方法,得到父对象的name属性,this.name得到自身的name属性。

接下来执行方法:

circle.init(5);
console.log(circle.name+","+circle.uber.name);
console.log(circle.getName()+","+circle.uber.getName());
console.log(circle.getS());

/*
结果:
circle,shape
parentName:shape childName:circle,shape
78.5
*/
时间: 2024-08-26 01:44:28

js对象之间的继承的相关文章

JS对象之间的关系

JS对象类型 JS中,可以将对象分为"内部对象"."宿主对象"和"自定义对象"三种. 1.本地对象 ECMA-262定义为"独立于宿主环境的JS实现提供的对象".简单来说,本地对象就是JS定义的类(引用类型).它们包括: Object/Function/Array/String/Boolean/Number/Date/RegExp/Error/ EvalError/RangeError/ReferenceError/Synta

js 对象创建及其继承的方法

重新看红皮书,觉得很多知识多看几遍确实是能看的更明白些.今天重温了一下对象创建和继承,就稍微记下来,巩固一下. js是面向对象的编程语言,ECMA-262吧对象定义为:“无序属性的集合,其属性可以包含基本值,对象或者函数”.每个对象都是基于一个引用类型创建的,这个引用类型可以是原生类型,也可以是自定义的. 一,讲讲创建对象的几个方法 1. var person = new Object(); 2. var person = {}; 3. 工厂模式 4. 构造函数模式 5. 原型模式 6. 组合使

JSON字符串和JS对象之间的转换

1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象 JSON字符串 str JSON.parse(str) eval(str) eval('('+str+')') eval('['+str+']') 对象字符串 "{\"id\":\"001\",\"name\":\"sanzhang\"}" 对应的json格式 {"id":"001",&q

JSON和JS对象之间的互转

1. jQuery插件支持的转换方式 $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2. 浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器: JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json对象转换成json对符串  注:ie8(兼容模式),

javascript --- 对象之间的继承

了解这一章之前,先把我们之前讲到的以构造函数创建对象为前提的继承抛到一边. 首先,我们先用一个var o = {}创建一个没有任何属性的空对象作为我们的‘画板’,然互在逐步向这个画板里添加属性,和方法,但这次我们不用this,而是直接将现有的对象属性全部拷贝过来. 如下面一个函数,我们传入一个对象,并返回她的一个副本. function extendCopy(parent){ var child = {}; for(var i in parent){ child[i] = parent[i];

JSON字符串与JS对象之间的转换

JSON.stringify: turns a Javascript object into JSON text and stores that JSON text in a string. 还有一种toJSONString()也可以达到相同效果,但是在js中没用成功过. JSON.parse :turns a string of JSON text into a Javascript object. 也可以用js原生的eval方法,不过不安全也不方便,需要在JSON text外加一对小括号.

JQ 于 JS 对象之间的转化

1. DOM 对象转成 jQuery 对象 对于已经是一个 DOM 对象,只需要用 $() 把DOM对象包装起来,就可以获得一个 jQuery 对象了,$(DOM 对象) 注: var是定义变量 如: ? 1 2 var v = document.getElementById("v"); //DOM对象 var $v = $(v); //jQuery 对象 转换后,就可以任意使用 jQuery 的方法. 2. jQuery 对象转成 DOM 对象 两种转换方式讲一个 jQuery 对象

JS对象以及"继承"

javascript面向对象: * 函数   * Arguments对象:模拟函数重载   * 变量的作用域:     * 作用域:       * 全局域       * 函数域     * 变量的分类:       * 全局变量:全局域+函数域       * 局部变量:当前函数域     * 特殊情况:       * 定义局部变量时,不使用var:局部变量被自动定义为全局变量       * 当全局变量与局部变量同名时,在函数域中只能访问到局部变量 * 闭包   * 作用域链:变量的作用

jQuery的文件引入、入口函数以及js对象和jquery对象之间的互相转换

JavaScript与jquery的区别 JavaScript是一门编程语言,用来编写客户端浏览器脚本. jQuery是javascript的一个库,包含多个可重用的函数,用来辅助简化javascript开发 jQuery能做的javascript都能做到,而JavaScript能做的事情,jQuery不一定能做到 jQuery文件的引入 <body> <div class="box"></div> <!--引包(引入jquery库)-->