云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > JavaScript面向对象精要-学习笔记

JavaScript面向对象精要-学习笔记

  • 62 次阅读
  • 3 次下载
  • 2026/4/23 6:45:15

第1章 原始类型和引用类型

1.1、 什么是类型

1、原始类型保存为简单数据值。引用类型则保存为对象,其本质是指向内存位置的引用。 2、原始值被直接保存在变量对象内;引用值作为一个指针保存在变量对象内,该指针指向实际对象在内存中的存储位置。

1.2、原始类型

1、5种原始类型

Boolean、number、string、null、undefined。

2、当将原始值赋给一个变量时,该值的具体信息将被复制到变量中。

3、鉴别原始类型:typeof。但typeof null,返回object,因此只能用val===null判断null。 4、===进行比较时不会将变量强制转换为另一种类型。

5、原来类型也拥有方法,是因为他们有封装类型。但null和undefined没有。

1.3、引用类型

1、就是对象,json对象,包含键和值。

2、创建对象,使用new操作符和构造函数,构造函数首字母大写,用于区分非构造函数。 3、js有垃圾收集功能,但不使用时最好将其引用解除,将对象变量置为null。 4、对象的属性随时可增加或删除。

1.4、内建类型实例化

1、Array、Date、Error、Function、Object、RegExp。

2、内建引用类型有字面形式,可不需要使用new操作符合构造函数显式创建。

3、字面形式,数组[]、对象{}、函数function xx或var xx=function(){}、正则表达式/xx/g。

1.5、访问属性

1、可使用“.”或“[]”

1.6、鉴别引用类型

1、函数用typeof返回function,其他返回object;

2、instanceof可鉴别具体引用类型,但鉴别Object都会返回true。Item instanceof Array。

1.7、鉴别数组

1、数组鉴别可用Array.isArray(arr);

1.8、原始封装类型

1、String、Number、Boolean。

2、用instanceof检查对应类型的返回值都是false;如果用typeof检查是返回Object,而不是各种的原来值类型。

1.9、总结

第2章 函数

2.1、声明还是表达式

1、函数声明:用function关键字开头,后面是函数名;函数表达式:函数后面不需要加上函数名,则为匿名表达式,或者赋给变量相当于函数名。

区别:函数声明可以在函数调用之后(js引擎会自动提升至顶部),但表达式,则只有先定义后使用。

2.2、函数就是值

1、使用引用值的地方,都可以直接使用函数。函数也是对象。

2.3、参数

1、js函数被保存在arguments的类似数组的对象中,但不是数组,用Array.isArray(arguments)返回false。

2、可用函数名.length检查个数(注意:返回的函数定义的参数个数,而不是实际传入的参数个数)

2.4、重载

1、重载:函数名相同,其他不同。函数由函数名、参数的个数及其类型组成。 2、js如果函数名相同,那后台定义的覆盖前面的!

3、js的重载,只能通过判断arguments的信息进行模拟!使用typeof、instanceof、个数。

2.5、对象方法

1、this对象:所有函数作用域内都有一个this,表示该函数,全局作用域内this代表全局。 2、改变this。即改变某个方法的内部参数的值,其实就是this的作用域。 1)、call()方法。第一个参数为指定this的值,后面的都是该函数需要传入的参数。 2)、apply()方法。只能接受2个参数,this的值,和参数数组。 3)、bind()方法。第一个参数是要传给新函数的this值,其他参数代表需要被永久设置在新函数中的命名参数。

2.6、总结

第3章 理解对象

3.1、定义属性

1、属性添加或定义时,js调用[[Put]],定义建同时赋值,这个属性为自有属性,只有该对象拥有。js通过[[Set]]修改属性的值。

3.2、属性探测

1、通过in操作符,查找某个属性是否在对象中。In可以检查自有属性和原型属性。 2、hasOwnProperty(),只能检测自有属性,不能检测原型属性。

3.3、删除属性

1、通过delete操作符来彻底移除对象的一个属性。

3.4、属性枚举

1、for-in,对应内部特征[[Enumerable]]设置为true,均可遍历。可通过propertyIsEnumeralbe()方法检查一个属性是否可枚举。

2、可见通过Object.keys(对象名)来获取属性名数组。

3、for-in能返回原型属性和自有属性。而keys只返回自有属性。

3.5、属性类型

1、属性类型有2种:数据属性和访问器属性。访问属性通过get name()或set name()来定义,好处可以对属性加一些操作,同时可以控制只读或只写。

3.6、属性特征

1、两个通用特征:[[Enumerable]]是否可遍历;[[Configurable]]是否可配置。

通过Object.defineProperty()方法,来改变属性特征。3个参数:拥有该属性的对象、属性名、包含需要设置的特征(emumerable、configureable)的属性描述对象。 2、两个数据属性特征:[[Value]]属性的值;[[Writable]]是否可写入。

通过Object.defineProperty()方法,来改变属性特征。value、writable。

注意:如果没有的属性,通过Object.defineProperty()可直接定义这个属性,但所有值为boolean的属性,都默认为false。

3、两个访问器属性特征:[[Get]]和[[Set]],直接定义get和set方法即可。 4、定义多重属性,Object.defineProperties()

5、获取属性特征:Object.getOwnPropertyDescriptor()。参数:对象、属性名。

3.7、禁止修改对象

1、对象可通过[[Extensible]]来禁止其属性的添加操作。 2、Object.preventExtensions()创建不可扩展的对象,通过Object.isExtensible来检查[[Extensible]]的值。

3、对象封印,被封印的对象是不可以扩展,其所有属性都不可配置。可改变属性值。 Object.seal()来封印一个对象,通过Objec.isSeal()来判断是否被封印。

4、对象冻结,对象是不可以扩展,其所有属性都不可配置,不可改变。不可改变属性值。 Object.freeze()来冻结一个对象,通过Object.isFrozen()来判断一个对象是否被冻结。

第4章 构造函数和原型对象

4.1、构造函数

1、可以自己定制构造函数,和普通函数一样,唯一要求首字母大写。没有参数时,new的时候可以不用带括号。可以用instanceof检查某个变量是否是某构造函数生成。业务可以用变量.constructor===检查。

2、构造函数可以初始化一些操作,通过this添加外部的属性或函数。 3、也可以通过Object.defineProperty()方法初始化内部属性。

4.2、原型对象

1、变量.hasOwnProperty(‘属性名’)可以检测自有属性,in可以检查自有和原型属性。

2、[[Prototype]]该属性是一个指向该实例使用的原则对象的指针。可以通过Object.getPrototypeOf()得到[[Prototype]]的属性。Js支持属性_proto_,直接访问[[Prototype]]的属性。也可以isPrototypeOf()方法检查某个对象是另一个对象的原型对象。 3、自有属性会覆盖原型属性,只有自有属性被删除原型属性才能再次起作用。 4、构造函数上使用原型对象,构造函数.prototype.函数名。

5、如果构造函数.prototype={}方式添加自有属性时,向的是Object而不是构造函数,需要通过constructor:构造函数,来指定。

6、Object.seal()和Object.freeze()完全操作的是自有属性,但可以通过prototype添加原型属性。因为[[Prototype]]属性是对象实例的自有属性,属性本身被冻结,但其指向的值(原型对象)并没有被冻结。

7、内建对象也可以添加原型属性,比如Array、String等。

4.3、总结

搜索更多关于: JavaScript面向对象精要-学习笔记 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第1章 原始类型和引用类型 1.1、 什么是类型 1、原始类型保存为简单数据值。引用类型则保存为对象,其本质是指向内存位置的引用。 2、原始值被直接保存在变量对象内;引用值作为一个指针保存在变量对象内,该指针指向实际对象在内存中的存储位置。 1.2、原始类型 1、5种原始类型 Boolean、number、string、null、undefined。 2、当将原始值赋给一个变量时,该值的具体信息将被复制到变量中。 3、鉴别原始类型:typeof。但typeof null,返回object,因此只能用val===null判断null。 4、===进行比较时不会将变量强制转换为另一种类型。 5、原来类型也拥有方法,是因为他们有封装类型。但null和undefined没有。

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com