• 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>
  • 相关阅读:
    Thinkphp5.0实战开发一------命名空间详解
    软件测试技术实验二
    软件测试技术作业3---PrintPrimes()
    软件测试技术实验一
    Github使用教程(二)------ Github客户端使用方法
    Github使用教程(一)------ 初识Github
    软件测试技术作业2
    软件测试作业1 — 令我印象最深的BUG
    Github网站加载不完全,响应超时,如何解决
    利用puppeteer实现PDF文件导出
  • 原文地址:https://www.cnblogs.com/diligenceday/p/3432512.html
Copyright © 2020-2023  润新知