博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于对象
阅读量:5151 次
发布时间:2019-06-13

本文共 1722 字,大约阅读时间需要 5 分钟。

对象的特性: 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上的属性

转载于:https://www.cnblogs.com/rainbow8590/p/7096204.html

你可能感兴趣的文章
淡定,啊。数据唯一性
查看>>
深入理解 JavaScript 事件循环(一)— event loop
查看>>
Hive(7)-基本查询语句
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>
Python字符编码
查看>>
leetcode 49. 字母异位词分组(Group Anagrams)
查看>>
NSPredicate的使用,超级强大
查看>>
自动分割mp3等音频视频文件的脚本
查看>>
判断字符串是否为空的注意事项
查看>>
布兰诗歌
查看>>
js编码
查看>>
【26】java的组合与继承
查看>>
web开发,我们是否应该更加Deep Inside了?
查看>>
Pycharm Error loading package list:Status: 403错误解决方法
查看>>
steps/train_sat.sh
查看>>
TLS 1.0协议
查看>>
java递归的几种用法
查看>>
转:Linux设备树(Device Tree)机制
查看>>
iOS 组件化
查看>>