js for in遍历对象_JavaScript面向对象深入探索

a63a9f1c7ccd135d29cabf9c0b61fb26.png

面向对象

继承

混入式继承

for...in

· 遍历对象1的每一个成员赋值给对象2

原型继承

直接替换

· 原型中原来的值会丢失

给原型添加成员

经典继承

var o = { name: "jack" } var obj = Object.create(o);

· 这就叫做经典继承,obj继承o的所有成员

创建一个函数,进入函数判断浏览器是否支持Object.create(obj)这个方法

· 如果支持,直接返回Object.create(obj)

· 如果不支持

• 新建一个空的构造函数然后把obj赋值给新创建的构造函数的原型对象这时新的构造函数就继承了obj的所有成员返回一个新构造函数的实例对象

继承的应用

可以创建一个构造函数,然后把系统对象赋值给构造函数的原型对象,这样构造函数就继承了系统对象的所有属性,还可以自己添加自定义属性,同时不影响系统对象

function Obj(age){ this.age = age; }; //把数组对象赋值给Obj的原型,这Obj就可以继承数组的所有成员 Obj.prototype = []; var arr = new Obj(18); //arr可以访问所有的数组对象 arr.push(2,2,3,4); console.log(arr); console.log(arr.length); //同时arr还看可以访问age这个自定义属性 console.log(arr.age);

函数对象Function

创建函数的三种方式

直接声明

· function fn(){函数体}

函数表达式

· var fn = function(){函数体}

函数对象

· var fn = new Function("x","y","函数体")

arguments

函数的一个属性,调用之后会把传入的参数,全都放到arguments这个数组中

eval

把字符串转换成js代码并之息

把JSON对象转换层js代码

· 要在前后加()

· 在前面加"var 变量名 = "

prototype的对象

方法

hasOwnProperty("")

· 判断对象是否有某个特定的属性。必须用字符串指定该属性(例如,o.hasOwnProperty("name"))。

isPrototypeOf()

2b9aa747f8984239d3ecf4e62938cc69.png

· 判断该对象是否为另一个对象的原型

propertyIsEnumerable

· 判断属性是否可一用for...in遍历

toLocaleString

toString

· 返回对象的原始字符串表示

valueOf

· 返回最适合该对象的原值。对于许多类,该方法返回的值都与toString()的返回值相同。

属性

constructor

· 指向构造函数

· 对创建对象的函数的引用(指针)。对于Object类,该指针指向原始的object()函数

prototype

· 对该对象的对象原型的引用。对于所有的类,它默认返回Object对象的一个实例

原型链

每个构造函数都有一个原型

每个原型是一个对象

· 每个原型对象也有构造函数

• 没给原型的构造函数也有原型对象

• 这就形成了原型链

直到找到Object的原型是null

创建一个构造函数1

创建另一个构造函数2

· 构造函数2.prototype = new 构造函数1;(知道构造函数2 的原型对象是构造函数1)构造函数2.prototype.constructor = 构造函数2;(手动指定构造函数2的原型对象的构造函数是构造函数2)

新建一个构造函数2的实例化对象,这个实例化对象也含有构造函数1的成员

静态成员/实例成员

构造函数访问的是静态成员

对象访问的是实例成员

自由主题

子主题 1

原型链关系

function cre(obj) { if(Object.create){ return Object.create(obj); }else{ //创建一个对象 function a() { } //把把ob这个对象赋值a对象的原型 a.prototype = obj; //这时候a就继承了ob的所有成员 return new a(); } }

8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值