内置的包装类

一、内置的包装类:

Object.prototype

Var xiaoming  =  new people();

此时:

Xiaoming.__proto__ === people.prototype;

当Xiaoming是构造函数new出来的时候,Xiaoming的原型链就等于people的原型。

系统内置了很多的构造函数,他们也叫做我们的基本类型值、引用类型的“包装类”。

1.1 object 函数

系统内置了一个object函数,可以直接new它,返回一个空对象。

1.2   function函数

系统内置了一个function函数,用于构造函数,事实上,所有的function字面量,都是他的实例。

任何字面量都有原型链指向原型的性质。

任何函数都是function的实例。Object也是function的实例,function自己也是自己的实例。

所有函数都是function的实例,所有的函数都有原型链指向原型的性质,所以function的prototype就是object的__proto__。任何对象都是object的实例,所以object的原型就是function.prototype的__proto__。

Function自己new出了自己,function自己的__proto__指向ffunction.prototype。

二、原型链深入

2.1   __proto__属性

W3C是没有规定一个元素的原型链有一个可见的属性,Chrome浏览器特有的__proto__属性,实际上,其他浏览器有原型链的机制,但是我们看不见这个属性。只不过chrome浏览器为了我们初始者学习方便,增加了这个属性:

但是Chrome中,__proto__是可以自由的更改的,而这根本不是语言的规范,其他浏览器没有实现这个功能。

Xiaoming.__proto__ = Dog.prototype;

也就是,这个__proto__属性其实在浏览器中,在语言规范中根本就是看不见的,就没有这个属性。

2.2  引用类型值得对象他们的字面量的__proto__就是他们类型的构造函数。

这个object.create()浏览器的兼容性很差,我们自己能不能写一个create,他接受一个对象参数,返回以这个对象为原型对象的新对象。我们可以用一个临时的函数来中转。

任何一个对象都有原型对象,原型链指向的最终点是object.prototype。

对象的toString() 方法都是定义在Object.prototype上的,而定义的obj对象最终指向的Object.prototype,所以所有的对象最终都能调用到toString()的这类的方法。把obj的原型链设置为null,就是把原型链切断了,指向不到object.prototype,所以obj调用toString()方法报错。

事实上,在语法设计上,当对象一旦创建,原型链一旦被确定,此时就没有任何方法删除、改变对象的原型链。Chrome中的__proto__仅仅供研究,学习使用。

Constructor属性比较脆弱,当我们修改原型链对象如people.prototype.haha=function(){},此时没有任何问题,但是如果用字面量强行修改原型链,此时new的xiaoming实例的constructor的属性就会丢失,返回的是一个object。

People对象有people.prototype原型对象,prototype上有constructor属性,但通过字面量进行了更改,小明是peoplenew出来的实例,所有也有people.prototype原型对象和constructor属性,字面量的原型链指向object.prototype,所以xiaoming的constructor丢失了。

2.3  观察者模式

“观察者模式”又叫做“发布 - 订阅模式”,它定义了对象间的一种1对N的依赖关系。当一个对象的状态发生改变时,所有“订阅”了它的对象都将得到通知。发布者要自己维持订阅者列表,当自己的状态发生改变的时候,调用每一个订阅者的listen方法,吧最新数值告诉他们。

例 : 老师是发布者(publisher),学生是订阅者(subscriber)。老师就是1,学生就是N,发布者来时要自己维持自己的学生实例数组,自己有一个属性students存放着所有订阅自己的人的列表;当发布作业的时候,用for循环分别调用每个调用者的相应方法即可。

时间: 2024-11-01 19:39:49

内置的包装类的相关文章

基本类型、引用类型、基本包装类型和单体内置对象

基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象.基本包装类型和单体内置对象都是特殊的引用类型. 一.基本类型 基本类型包含Undefined.Null.Boolean.Number.String 这5种.基本数据类型是按值访问的,因为可以操作保存在变量中的实际值. 基本类型保存在内存中的栈中,大小固定,复制其变量时会创建这个值的一个副本.用typeof方法可以确定一个值是哪种基本类型. 二.引用类型 引用类型包括Object .Array.  Date.  RegExp.

DOM笔记(九):引用类型、基本包装类型和单体内置对象

一.Array 1 .创建数组的方式 //Array构造函数(可以去掉new)var colors0 = new Array();var colors1 = new Array(20);var colors3 = new Array("red","blue","green");//数组字面量var colors4 = ["red","blue","green"];var colors5 

精通Hibernate——Java的内存地址与Hibernate的内置对象标识符

在Java语言中,判断两个对象引用变量是否相等,有以下两种比较方式: (1)比较两个变量所引用对象的内存地址是否相同,"=="就是比较的内存地址.此外,在Object类中定义的equals(Object o)也是按内存地址来比较的.如果用户自定义的类没有覆盖equals(Object o)方法,也是按照内存地址来比较的.例如,以下代码用new语句共创建了两个Customer对象,,并定义了三个Customer类型的引用变量,c1,c2,c3: Customer c1 = new Cus

Python补充--Python内置函数清单

Python内置函数 Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些函数,不需要定义.最常见的内置函数是: print("Hello World!") 在Python教程中,我们已经提到下面一些内置函数:基本数据类型 type()反过头来看看 dir()   help()    len()词典 len()文本文件的输入输出 open()循环设计 range()   enumerate()    zip()循环对象

python基础9 -----python内置函数2

一.python内置所以函数     Built-in Functions     abs() divmod() input() open() staticmethod() all() enumerate() int() ord() str() any() eval() isinstance() pow() sum() basestring() execfile() issubclass() print() super() bin() file() iter() property() tuple

javaScript知识体系(中)- DOM、BOM、其它内置对象

1. DOM基本概念 1.1 DOM DOM Document Object Model 文档对象模型     就是把HTML文档模型化,当作对象来处理     DOM提供的一系列属性和方法可以视作一个工具箱,极大地方便了我们对文档的处理. 1.2 内容概念 文档(Document):就是指HTML或者XML文件     节点(Node):HTML文档中的所有内容都可以称之为节点,常见的节点有         元素节点 属性节点 文本节点 注释节点     元素(Element)        

Pyhton内置函数大全

一.数学运算类 abs(x)求绝对值 1.参数可以是整型,也可以是复数 2.若参数是复数,则返回复数的模 complex([real[, imag]])  创建一个复数 coerce()   可以看成一个数值类型转换函数)有两个参数,都是数字,返回这两个数字的一个列表,将这两个数字的数据类型统一.如coerce(1,2j),返回(1+0j,2j) divmod(a, b)分别取商和余数 注意:整型.浮点型都可以 float([x])将一个字符串或数转换为浮点数.如果无参数将返回0.0 int([

Python学习:内置函数

Python内置了很多有用的函数,我们可以直接调用.可以查看官方文档:https://docs.python.org/2/library/functions.html 举例说明: 一.数学运算类 abs(x) 求绝对值 1.参数可以是整型,也可以是复数 2.若参数是复数,则返回复数的模 complex([real[, imag]]) 创建一个复数 divmod(a, b) 分别取商和余数 注意:整型.浮点型都可以 float([x]) 将一个字符串或数转换为浮点数.如果无参数将返回0.0 int

内置函数大全

python内建函数 一.数学运算类 abs(x) 求绝对值1.参数可以是整型,也可以是复数2.若参数是复数,则返回复数的模 complex([real[, imag]]) 创建一个复数 divmod(a, b) 分别取商和余数注意:整型.浮点型都可以 float([x]) 将一个字符串或数转换为浮点数.如果无参数将返回0.0 int([x[, base]])  将一个字符转换为int类型,base表示进制 long([x[, base]])  将一个字符转换为long类型 pow(x, y[,