zoukankan      html  css  js  c++  java
  • 关于对象

    对象的特性: 1.继承性 2.封装性 3.多态性
    对象的属性和方法可以重写(子类重写父类的方法);但不能重载(JS中没有重载,但可以通过参数个数的判断来模拟重载)。

    创建对象的方式:
    
    1.字面量形式:    var obj = {}
    
    2.内置对象创建:  var obj = new Object();
    
    3.构造函数创建:  function Test(){}  var obj = new Test()
    
    4.混合模式创建: function Text(){}  Text.prototype={}  var obj = new Text()
        解决了方法或属性公有的问题,把实例之间相同的属性和方法提取成公有的属性和方法,想让谁公有就把他放到构造函数的prototype上即可。
    
    5.工厂模式创建: function newObj(name,age,fn){
                        var obj = {};
                        obj.name = name,
                        obj.age = age,
                        obj.fn = function(){}
                        return obj;
                     }
                     var obj = newObj('name','age')
                    也称'函数的封装'(低耦合高内聚:减少页面中的冗余代码,提高代码的重复利用率)
    
    
    工厂模式、构造函数、混合模式创建的区别:
    
    工厂模式:实例化不需要使用new关键字,在创建函数时需要手动创建一个对象并返回这个对象。
    构造函数: 实例化需要new关键字,在创建构造函数的时候不需要手动创建一个对象;实例化的对象之间是相互独立的,每实例化一个对象就要在内存中开辟一份空间;
    混合模式:在原型上的方法和属性是共有的,实例化对象时,这些共有的属性和方法只占用一份内存空间。
    
    
    构造函数的返回值
    
    1.在构造函数中浏览器会默认的把实例返回(返回的是一个对象数据类型的值)
    2.手动return : 如果return的是简单数据类型:当前实例不变
                如果return的是复杂数据类型:替换当前的实例
    
    原型链:
    JS通过原型链来实现继承性;
    
    属性搜索法则:
    
    首先在对象的私有属性上查找,如果私有中存在这个属性,则获取私有属性;
    如果私有没有,则通过__proto__找到所属类的原型(类的原型上定义的属性和方法都是当前实例公有的属性和方法),原型上存在,获取的是公有的属性值;
    如果原型上也没有。则继续通过原型上的__proto__继续向上查找,一直查找到Object.prototype,
    如果还没有就返回undefined;
    
    
    关于原型:
    1.每一个函数数据类型(普通函数和类)都有个天生自带的属性:prototype,并且这个属性是一个对象数据类型的值。
    2.并且在prototype上浏览器天生给它加了一个属性:constructor(构造函数),属性值是当前函数(类)本身。
    3.每一个对象数据类型(普通对象、实例、prototype)也天生自带一个属性:__proto__,属性值是当前实例所属类的原型(prototype)。
    4.Object是Js中所有对象数据类型的基类(最顶层的类); 
      F1 instanceof Object 结果是true,因为f1通过__proto__可以向上级查找,不管多少级最后总能找到object;
      在object.prototype上没有__proto__;
    
    检测是否有某个属性:
    attr in object 检测某个属性是否属于这个对象
    hasOwnProperty 检测某个属性是否为这个对象的私有属性
         Console.log( obj.hasOwnProperty (“attr”))
    isPrototypeOf  是否为prototype上的属性
  • 相关阅读:
    用Python发生RestFul API POST和GET请求
    C# 8.0中的新功能
    A股数据分析之收集数据:股票列表和股价
    A股数据分析之收集数据:公司详细信息
    VS 2019中修改C#语言版本
    Weak Event Manager
    在WPF中使用MVVM的方式关闭窗口
    C# GDI绘制仪表盘(纯代码实现)
    C#中实现文件拖放打开的方法
    C#设置自定义文件图标实现双击启动
  • 原文地址:https://www.cnblogs.com/rainbow8590/p/7096204.html
Copyright © 2011-2022 走看看