+function(exports){
//命名空间
var MML={};
/**
* 简单继承的实现
*
* 1、通过代理function实例对象区分父对象与子对象的prototype属性指向的prototype对象
* 2、通过闭包原理实现动态生成私有属性存取器
* 3、子类可以添加自身的私有属性、特权方法、原型对象
*
* @time 2015年2月5日13:32:05
* @author 710335997@qq.com
*
* @param {Object} parent
* @param {Object} param
*/
MML.extend=function(parent,param){
function Proxy(){}
Proxy.prototype=parent.prototype;
function Son(){
var _self={};//存储私有属性、真正的隐藏私有属性
parent.call(this);//拷贝父类属性到子类
if(param&&typeof param ==="object"){
for(var p in param){
var _=p.toString().charAt(0).toUpperCase()+p.toString().substr(1);
if(p!=="prototype"&¶m.hasOwnProperty(p)&& typeof param[p] ==="string"){
Son.prototype["set"+_]=(function(key){
var __=key;
return function(value){
_self[__]=value;
};
}(p));
Son.prototype["set"+_](param[p]);
Son.prototype["get"+_]=(function(key){
var __=key;
return function(){
return _self[__];
}
}(p));
}
if(p=="prototype" && param[p] && typeof param[p]==="object"){
for(var a in param[p]){
Son.prototype[a]=param[p][a];
}
}
}
}
};
Son.prototype=new Proxy();
return Son;
};
exports.MML=MML;
}(window);
function Animate(){
this.type="";
this.age=3;
}
var Dog=new MML.extend(Animate,{
name:"dog",
type:"Dog",
prototype:{
say:function(){
console.log("i am "+this.getName());
}
}
});
var animate=new Animate();
var dog=new Dog();
console.log(dog.getName())//输出: dog
Animate.prototype.test=function(){
console.log("父类原型方法");
};
console.log(Animate.prototype==Dog.prototype);//false 分开了原型
console.log(animate.test==dog.test);// true 依然可以继续原型方法
dog.test();//输出: 父类原型方法
console.log(animate instanceof Animate); // true
console.log(animate instanceof Dog); //false
console.log(dog instanceof Dog); // true
console.log(dog instanceof Animate); //true
分享到:
相关推荐
在本文中,我们将深入探讨JavaScript继承机制的实现方式,并对基于原型的继承、构造函数方式继承、组合继承、寄生式继承等继承机制进行了总结归纳和分析。 基于原型的继承 JavaScript是一门基于原型的语言,它不像...
JavaScript继承机制探讨及其应用 JavaScript是一门弱类型语言,具有函数式编程和面向对象编程的特点。随着近几年JavaScript生态圈的发展和成熟,项目的编码量和复杂度也在呈几何级数增长。JavaScript面向对象编程中...
要用ECMAScript实现继承机制,首先从基类入手。所有开发者定义的类都可作为基类。出于安全原因,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击。
### JavaScript继承实现示例 #### 知识点概述 在JavaScript中,继承是一种常见的对象间关系,它允许一个对象(子类)继承另一个对象(父类或超类)的属性和方法。通过继承,可以复用代码、提高程序的可维护性,并...
本文将深入探讨JavaScript继承的实现方式,以及其中的问题和解决方案。 首先,我们来看混合方式的实现,这种方式结合了原型链和对象冒充。在JavaScript中,构造函数是用于创建特定类型对象的函数。例如,`Employee`...
JavaScript 是一种广泛应用于 Web 开发的脚本语言,它的继承机制是其面向对象特性的重要组成部分。在 JavaScript 中,继承主要用于创建类之间的关系,允许子类(派生类)继承父类(基类)的属性和方法,从而实现代码...
1. JavaScript 中的继承机制是通过 prototypeChain 来实现的。 2. 继承机制可以实现代码复用和提高编程效率。 3. 组合机制是 JavaScript 中另一个重要的代码复用机制。 4. 继承机制的目的是为了实现代码复用和提高...
在JavaScript的世界里,原型继承不仅是实现对象功能共享的核心机制,也是其面向对象编程风格的基础。本文将深入探讨JavaScript原型继承的工作原理、实现方式以及在现代Web开发中的应用。 JavaScript的原型继承是一种...
JavaScript,作为一种基于原型的面向对象语言,其继承机制与传统的类继承有所不同。在JS中,对象可以直接通过原型链实现继承,而无需像Java那样使用`extends`关键字。本文档将探讨JavaScript中的继承实现方式及其优...
### 浅析JavaScript原型继承机制 #### 一、引言 JavaScript作为一种动态语言,其对象模型与传统的面向对象编程语言有所不同。在JavaScript中,并没有直接提供类的概念,而是通过原型来实现继承。本文将深入探讨...
在JavaScript中,面向对象编程是实现复杂功能和代码复用的关键。继承是面向对象的核心特性之一,它允许一个对象(子类)从另一个对象(父类)获取...了解这些基础概念有助于我们更好地理解和使用JavaScript的继承机制。
通过以上分析可以看出,JavaScript 中的继承机制非常灵活,可以通过原型链来轻松实现对象之间的继承关系。在实际开发中,这种机制被广泛应用于各种场景,特别是在使用jQuery等库时,经常会看到这样的继承模式。理解...
总结起来,JavaScript的继承机制提供了多种实现方式,每种都有其特点和适用场景。开发者可以根据项目需求选择最合适的继承策略。需要注意的是,随着ES6的类和继承语法的引入,这些传统的继承方式在现代JavaScript...
本篇文章将深入探讨JavaScript实现继承的七种常见方式,帮助你更好地理解和运用这一概念。 1. 原型链继承(Prototype Chain Inheritance) 原型链是JavaScript实现继承的基础。每个函数都有一个`prototype`属性,这...
文章最后以一个管理系统为例子,说明了如何使用上述继承机制实现三级类结构。例如,先定义一个Person类,包括名字、姓氏等属性,然后再定义Employee类继承自Person,并添加公司等属性,从而实现了继承。 这篇文章...
与其他面向对象语言相比,JavaScript的继承机制更为复杂。在Java或C++等语言中,继承通常只需要一个关键字,如`extends`,但在JavaScript中,实现继承需要采用一系列技术。 JavaScript使用的是原型式继承,这是它与...
本文将介绍 JavaScript 中的 9 种继承实现方式,帮助读者更好地理解 JavaScript 的继承机制。 1. 原型链继承 原型链继承是 JavaScript 中实现继承的默认方式。如果要让子对象继承父对象,可以将子对象构造函数的 ...
JavaScript支持多种继承机制,包括原型链继承、构造函数继承、组合继承、寄生式继承以及寄生组合继承等。接下来,我们将详细探讨这些继承方式。 ### 1. 原型链继承 原型链继承是通过将一个对象设置为另一个对象的...