• JS模式:Mixin混合模式,=_=!就是常见的Object.create()或者_extend()


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    <body>
    <script>
    var Person = function(firstName,lastName){
        this.firstName = firstName;
        this.lastName = lastName;
        this.genter = 'male';
    };
    var clark = new Person('Clark','kent');
    console.log(clark);//   ->_->  Person {firstName: "Clark", lastName: "kent", genter: "male"} 
    
    //通过试用call方法,让superhero继承person函数内部的所有属性,理解为执行一遍,并把,执行的语句赋给当前的this;
    var Superhero = function(firstName,lastName,powers){
        person.call(this,firstName,lastName);
        this.powers = powers;
    };
    /*__________________________________________________________________________________________________________*/
    var Car = function(setting){
        this.model = setting.model || 'no model provided';
        this.color = setting.color || 'no color provided';
    };
    var Mixin = function(){};
    Mixin.prototype = {
        driveForward : function(){
            console.log( "drive forward" );
        },
        driveBackward : function(){
            console.log("drive backward");
        },
        driveSideways : function(){
            console.log("drive sideways")
        }
    };
    function augment(receivingClass,givingClass){
        if(arguments[2]){
            for(var i =0; i<arguments.length; i++){
                receivingClass.prototype[arguments[i]] = givingClass.prototype[arguments[i]];
            };
        }else{
            for(var method in givingClass){
                if(!receivingClass.hasOwnProperty[methodName]){
                    receivingClass.prototype[methodName] = givingClass.prototype[methodName]
                };
            };
        };
    };
    augment(Car,Mixin,"driveForward","driviBackward");
    var myCar = new Car({
        model : 'ford++++',
        color : '#f00'
    })
    myCar.driveForward() // drive forward 
    </script>
    </body>
    </html>
  • 相关阅读:
    reids 数据库学习
    java 8 学习二(Lambda表达式)
    java 8 学习一(概述)
    update Select 从查询的结果中更新表
    从一段文字中提取出uri信息
    Hadoop3.0磁盘均衡器
    MapReduce 程序mysql JDBC驱动类找不到原因及学习hadoop写入数据到Mysql数据库的方法
    yarn计算一个节点容量及其配置项
    YARN的capacity调度器主要配置分析
    1084 Broken Keyboard (20 分)字符串
  • 原文地址:https://www.cnblogs.com/diligenceday/p/3432512.html
Copyright © 2020-2023  润新知