Js中继承模式

//原型工厂模式
    function extend(target, origin) {
        target.prototype = Object.create(origin.prototype);//此方法创建了一个对象,修改父类原型与子类原型相互独立
        Object.defineProperty(target.prototype, "constructor", {
            value: target,
            enumerable: false
        })
    }

 //对象工厂模式
    function User(age, name) {
        this.age = age;
        this.name = name;
    }

    function member(age, name) {
        let instance = Object.create(User.prototype);
        User.call(instance, age, name);
        instance.pri = function () {
            console.log([age, name]);
        }
        return instance;
    }

    var queen = member(11, ‘Tom‘);
//通过mixin实现多继承
    let admin = {
        prtadmin() {
            return "admin";
        }
    }

    let user = {
        __proto__: admin, // mixin的内部继承
        prtuser() {
            console.log(super.prtadmin() + "user"); //super关键字 = this.__proto__
        }
    };

                // 向函数原型内添加方法的三种方式

    // Fun.prototype.user = user.prtuser;
    // Fun.prototype.admin = admin.prtadmin; 该方法可以将添加的方法进行重命名

    // Object.assign(Fun.prototype, admin, user); 使用Object.assign方法会改变原对象

    // Fun.prototype = Object.assign(Fun.prototype, admin, user);
    function Fun() {

    }

    let fun = new Fun();

原文地址:https://www.cnblogs.com/chuangqianmingyueguang/p/12174672.html

时间: 2024-11-13 06:34:40

Js中继承模式的相关文章

js中State模式的解析及运用

 状态模式,在大的范畴中的定义为当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类.每种编程语言有不同的实现方式,运用的范围也多用于游戏之中. 这里我用javascript来模拟状态模式,主要思想是通过事件监听的效果来控制一个主要对象的状态.那么何为事件监听的效果呢?在其他语言中,可以通过多个对象的协作来完成状态模式,而我在javascript中可以通过对DOM节点进行事件操控来传递消息,使主要对象接收消息(当然不同状态接收到的消息所产生的反应是不一样的).而在javascr

js中继承的几种用法总结(apply,call,prototype)

本篇文章主要介绍了js中继承的几种用法总结(apply,call,prototype) 需要的朋友可以过来参考下,希望对大家有所帮助 一,js中对象继承 js中有三种继承方式 1.js原型(prototype)实现继承 <SPAN style="<SPAN style="FONT-SIZE: 18px"><html>   <body>  <script type="text/javascript"> 

js中继承的方法总结(apply,call,prototype)

一,js中对象继承 js中有三种继承方式 1.js原型(prototype)实现继承 代码如下: <SPAN style="<SPAN style="FONT-SIZE: 18px"><html> <body> <script type="text/javascript"> function Person(name,age){ this.name=name; this.age=age; } Person

浅谈js中继承的理解和实现

一.前言 java.C#等正统面向对象语言都会提供类似extend之类的处理类的继承的方法,而javascript并没有提供专门的方法用于继承,在javascript中使用继承需要一点技巧.js中实例的属性和行为是由构造函数和原型两部分组成的,js的继承也分为这两部分.下面给大家分享一下在js中如何实现继承,讲的不对的地方望大家指正! 二.继承构造函数中的属性和行为 我们定义两个类Animal和Bird类,来实现js中类的继承. //定义Animal类 function Animal(name)

js中singleton模式解析及运用

singleton模式,又名单例模式.顾名思义,就是只能实例化一次的类(javascript中没有真正的类,我们通常用函数来模拟类,习惯称之为"伪类").具体地说,singleton模式,就是在该实例不存在的情况下,可以通过可以方法创建一个类来实现创建类的新实例:如果实例已经存在,它会返回一个该对象的引用. 接下来我将用一个案列来将singleton模式进行分析.在我们的web网上通常会看到一些图片的放大查看,如下图:                                  

js中继承的实现,原型链的知识点归纳,借用构造函数,组合继承(伪经典继承)

博客搬迁,给你带来的不便,敬请谅解! http://www.suanliutudousi.com/2017/10/31/js%e4%b8%ad%e7%bb%a7%e6%89%bf%e7%9a%84%e5%ae%9e%e7%8e%b0%ef%bc%8c%e5%8e%9f%e5%9e%8b%e9%93%be%e7%9a%84%e7%9f%a5%e8%af%86%e7%82%b9%e5%bd%92%e7%ba%b3%ef%bc%8c%e5%80%9f%e7%94%a8%e6%9e%84%e9%80%a

JS 中通过对象关联实现『继承』

JS 中继承其实是种委托,而不是传统面向对象中的复制父类到子类,只是通过原型链将要做的事委托给父类. 下面介绍通过对象关联来实现『继承』的方法: Foo = { // 需要提供一个 init 方法来初始化参数,而不能通过构造函数来初始化参数了 init: function(who) { this.me = who; }, identify: function() { return "I am " + this.me; } }; Bar = Object.create(Foo); //

探讨 JS 的面向对象中继承的那些事

最近学了 JS 的面向对象,这篇文章主要是探讨 JS 的面向对象中继承的那些事. JS中继承的特点: 1.子类继承父类: 2.子类可以用父类的方法和属性 3.子类的改变可以不影响父类 下面用一个例子来说明 JS 的继承 这段代码创建了一个父类以及它的原型,同时还创建了一个子类,并继承了父类的私有属性 1 <script> 2 //这是父类 3 function Father(name,age,marry){ 4 this.name=name; 5 this.age=age; 6 this.ma

JS中有关对象的继承以及实例化、浅拷贝深拷贝的奥秘

一.属性的归属问题 JS对象中定义的属性和方法如果不是挂在原型链上的方法和属性(直接通过如类似x的方式进行定义)都只是在该对象上,对原型链上的没有影响.对于所有实例共用的方法可直接定义在原型链上这样实例化的的时候就不用对每个实例定义该属性方法,所有的实例均具有该方的引用见最后的输出. function Myclass(){ this.x=" x in Myclass"; this.get=function(){}//每次实例化对象,每个对象的该方法都是独立的,是不相同的 } Mycla