JS 심층(객체용)

2887 단어

공장 모드


1. new 없음

function CreatePerson(name,qq) 
        {
            // 
            var obj=new Object()
            
                        // 
            obj.name=name
            obj.qq=qq

            obj.showName=function()
            {
                console.log(this.name)
            }

            obj.showQQ=function()
            {
                console.log(this.qq)
            }

            // 
            return obj
        }

        var obj1=CreatePerson('LiLei',2326657890)
        obj1.showName()

        var obj2=CreatePerson('HanMeiMei',9325657190)
        obj2.showQQ()

2. new 있음

function createPerson(name,qq) 
        {
            // 
            //var this=new Object() 

            this.name=name
            this.qq=qq

            this.showName=function()
            {
                console.log(this.name)
            }

            this.showQQ=function()
            {
                console.log(this.qq)
            }
            
           // 
            //return this
        }
        var obj1=new CreatePerson('LiLei',2326657890)
        obj1.showName()

        var obj2=new CreatePerson('HanMeiMei',9325657190)
        obj2.showQQ()

혼합 모드

function createPerson(name,qq)   // 
        {
            this.name=name
            this.qq=qq
        }
        CreatePerson.prototype.showName=function() // 
        {
            console.log(this.name)
        }

        CreatePerson.prototype.showQQ=function()
        {
            console.log(this.qq)
        }

        var obj1=new CreatePerson('LiLei',2326657890)
        obj1.showName()

        var obj2=new CreatePerson('HanMeiMei',9325657190)
        obj2.showQQ()

단일 모드(json)

var json1={

            name:"lilei",
            qq:23344343,

            showName:function(){
                console.log(this.name)
            },
            showQQ:function(){
                console.log(this.qq)
            }
        }
            json1.showName()

계승


원리: a.call(b)은 원래 a의 속성/방법을 가리키며 b가 a에 대한 계승을 실현했다.

function A(){  //A 
           this.abc=12
        }

        A.prototype.show=function(){  // 
        console.log(this.abc)
        }

        function B(){
          A.call(this) // B A 
        }

        B.prototype.unique=function(){
         console.log("it is s a unique function for B")
        }
        
        for(var i in A.prototype)
        {
            B.prototype[i]=A.prototype[i] 
            // B A 。 B.prototype=A.prototype, , B unique A
        }
         
        var b=new B()
        console.log(b.abc)//B A 
        b.show()//B A 
        b.unique()//B 

좋은 웹페이지 즐겨찾기