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>
  • 相关阅读:
    Hibernate 再接触 事务隔离机制
    Hibernate 再接触 一级缓存 二级缓存 查询缓存
    Hibernate 再接触 性能优化
    Hibernate 再接触 HQL
    Hibernate 再接触 树状结构设计以及学生课程成绩表的设计
    DotNetBar.MetroTilePanel 样式、加载数据、获取数据
    C# superGridControl 样式设置、加载数据、获取数据
    system.data.oracleclient 需要 8.17 需要oracle客户端问题
    程序员必备
    LinQ to sql
  • 原文地址:https://www.cnblogs.com/diligenceday/p/3432512.html
Copyright © 2011-2022 走看看