zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Codeforces Round #411 (Div. 2)
    腾讯比赛资料
    AtCoder Beginner Contest 060
    hdu 5288 数学 ****
    hdu 1866 几个矩形面积的和 ***
    hdu 2232 矩阵 ***
    bzoj 1415 期望+记忆化搜索 ****
    hdu 5033 单调栈 ****
    hdu 3032 sg打表找规律 *
    hdu 2516 FIB博弈
  • 原文地址:https://www.cnblogs.com/diligenceday/p/3432512.html
Copyright © 2011-2022 走看看