js- 对象
2016-06-28 20:14
405 查看
原始值 VS 对象
javaScript中的值可以被划分为两个大类:原始值(primitive) and 对象(object);
一.primitve
1、字符串
2、数字: 在js的世界里,所有数字都是浮点数,是双精度的
3、布尔值
4、null
5、undefined
二.所有其他的值都是对象
1、primitve 的包装对象:Boolean、Number、String
2、[b]日期
[/b]
3、[b]创建的对象[/b]
(1)对象是可变的。
Js的对象是可以动态添加属性的。
(2)每个对象都有自己唯一的标识符。
通过字面量或者构造函数创建的对象和其他任何对象都不相等。
[]===[] ---false
对象是通过引用来比较的。只有两个对象有相同的标识,才认为对象是相等的。
(3)变量保存了对象的引用。
typeof VS instanceof
typeof 可以用来区分原始值与对象,instanceof可以用来区分对象对象。
typeof null ---- Object
但是, null !=Object
对象的创建
对象的修改
并非所有的对象上都有原型
如果用create去创建对象,创建的方法或属性,都属于原型链,并不是这个对象的属性。
javaScript中的值可以被划分为两个大类:原始值(primitive) and 对象(object);
一.primitve
1、字符串
2、数字: 在js的世界里,所有数字都是浮点数,是双精度的
3、布尔值
4、null
5、undefined
二.所有其他的值都是对象
1、primitve 的包装对象:Boolean、Number、String
2、[b]日期
[/b]
3、[b]创建的对象[/b]
(1)对象是可变的。
Js的对象是可以动态添加属性的。
(2)每个对象都有自己唯一的标识符。
通过字面量或者构造函数创建的对象和其他任何对象都不相等。
[]===[] ---false
对象是通过引用来比较的。只有两个对象有相同的标识,才认为对象是相等的。
(3)变量保存了对象的引用。
typeof VS instanceof
typeof 可以用来区分原始值与对象,instanceof可以用来区分对象对象。
typeof null ---- Object
但是, null !=Object
对象的创建
如何理解 var p1=new Person() 这句代码呢? 可以分解成三步操作。 var p1={}; //创建一个新对象 p1.__proto__=Person.prototype; //将构造函数的作用域赋给新对象, Person.call(p1); //执行构造函数中的代码 返回新对象
这里会改变对象的__proto__属性,属性类型会由Object变成Person,,并且将Person的属性值全部指向p1.
对象的修改
var Person=function() { }; //每个函数都有一个 prototype属性,这个属性指向函数的原型对象 //原型对象会自动获取一个constructor(构造函数)属性,这个属性指向 prototype属性所在的函数 的指针(估计是一种引用) //调用构造函数创建一个实例后,实例内部 包含一个指针([[Prototype]])) //Chrome 在每个对象上都支持一个属性 __proto__,未经任何修改时,一个对象 __proto__,类型是Object。 //__proto__指向 构造函数的原型对象 var Programmer = function () { }; Programmer.prototype=new Person();
var Programmer1 = function () { }; Programmer1.prototype=Person.prototype; //问题来了,这两者的区别是什么呢
1、Programmer.prototype=new Person(); 此时,Programmer已经不存在constructor(),prototype已经改变,类型已经是Person, 里面有constructor(); 2、Programmer1.prototype=Person.prototype; 此时,依旧含有constructor(),但constructorl类型已变成Person,里面的 prototype: Person
外围prototype类型仍旧是Object。
并非所有的对象上都有原型
如果用create去创建对象,创建的方法或属性,都属于原型链,并不是这个对象的属性。
相关文章推荐
- js闭包函数为什么有内存泄漏的问题存在
- JavaScript绑定事件的方法[3种]
- 关于ArcGIS API for Javascript的安装_3.17API与SDK
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
- 使用window.postMessage实现跨域通信
- jsp中自定义Taglib基础篇(1)
- 导入项目中的js文件出现乱码
- DOM基础及应用(二)
- WIKI服务搭建-JSPWIKI
- javascript中的一些核心知识点以及需要注意的地方
- json
- JSP九大内置对象及四个作用域
- Javascript快速入门(上篇)
- JS原型理解
- JavaScript里的循环方法:forEach,for-in,for-of
- 执行环境及作用域总结
- 使用play框架来解析json字符串
- JS函数节流
- Ajax中的get和post两种请求方式的异同
- JSP内置对象值out对象及其它的一些常见方法