zoukankan      html  css  js  c++  java
  • 11-19面向对象

    1.使用typeof运算符确定对象的基本类型

      (number,string,function,undefined,object),

        如果typeof运算符返回object,

        再用instanceof和constructor来确定该对象是否属于某个具体类型

          var arr=[];
            console.log(typeof arr);//object
            console.log(arr instanceof Array);//true
            console.log(arr.constructor);//array

    2.JavaScript 自定义对象

      创建新对象有多种不同的方法:

       1. 直接给对象扩充属性和方法 、对象字面量

       2. 工厂方式

       3. 构造函数方式  

      4. 原型(prototype)方式

      5. 混合方式(构造函数和原型) .........

    // 1.直接给对象扩充属性和方法
            var cat1={};
            cat1.name='小猫';
            cat1.color='white';
            cat1.skill=function(){
                alert('喵喵');
            }
            alert(cat1.name);//小猫
            cat1.skill();//喵喵
            // 2.对象字面量
            var cat2={
                name:'小黑',
                color:'black',
                skill:function(){
                    alert('111');
                }
            };
            console.log(cat2.name);//小黑
            //3.工厂方式
            function cat4(n,c){
                var cat={};
                cat.name=n;
                cat.color=c;
                cat.skill=function(){
                    alert('lalal');
                }
                return cat;
            }
            var cat5=cat4('小红','red');
            cat5.skill();//lalal
            //4.构造函数
            function Cat(n,c){
                this.name=n;
                this.color=c;
                this.skill=function(){
                    alert('构造函数');
                }
            }
            var cat6=new Cat('小兰','blue');
            cat6.skill();//构造函数
            //5.原型(prototype)方式
            function Cat10(){};
            Cat10.prototype.name='小绿';
            Cat10.prototype.color='green';
            Cat10.prototype.skill=function(){
                alert('原型方法');
            }
            var cat11=new Cat10();
            cat11.skill();//原型方法
            function Cath(n,c){
                this.name=n;
                this.color=c;
                this.food='猫粮'
            }
            Cath.prototype.skill=function(){
                alert('混合方式');
            }
            var cat12=new Cath('小王','black');
            cat12.skill();//混合方法

    (1)构造函数

        当任意一个普通函数用于创建一类对象时,它就被称作 构造函数 或 构造器 (constructor)

        构造函数的作用就是初始化一个新创建的对象,并在使用对象前设置对象的属性和方法。

         通常是利用无敌的this,在函数内部对 this 添加属性和方法,因为this就表示当前运行时的对象,将构造函数this的作用域指向新对象,将当前运行对象的属性和方法都赋给新对象,这样的对象模式称为构造函数模式

       javascript的方法可以分为三类:

         1. 对象方法 2. 类方法 3. 原型方法

        每个函数对象都有一个prototype(原型)属性

        prototype 属性可向对象添加属性和方法

        Javascript中对象的prototype属性的解释是: 返回对象类型原型的引用

    (2)prototype原型

      所有创建在prototype上的属性和方法

      都将被所有对象实例分享(继承)

      指针指向的就是prototype对象

      prototype有一个注意点,如果是方法,可以共用内存,如果是一个属性,还是会新开内存的。   混合方式创建对象: 构造函数和原型混合使用,构造函数定义对象的属性,原型(prototype)定义对象的方法,这样就可以做到属性私有,方法共享

  • 相关阅读:
    leetcode 86. Partition List
    leetcode 303. Range Sum Query
    leetcode 1310. XOR Queries of a Subarray
    leetcode 1309. Decrypt String from Alphabet to Integer Mapping
    leetcode 215. Kth Largest Element in an Array
    将numpy.ndarray写入excel
    leetcode 1021 Remove Outermost Parentheses
    leetcode 1306. Jump Game III
    leetcode 1305. All Elements in Two Binary Search Trees
    ICCV2019 oral:Wavelet Domain Style Transfer for an Effective Perception-distortion Tradeoff in Single Image Super-Resolution
  • 原文地址:https://www.cnblogs.com/SunShineM/p/6080711.html
Copyright © 2011-2022 走看看