js面向对象总结
来源:互联网 发布:易语言网络验证教程 编辑:程序博客网 时间:2024/05/16 01:18
一、创建对象的三种方法
1、字面量方式创建
var obj={ a:"战三", b:"李四"}
2、new构造器的方法,首先要了解原型链
function foo(){}//当创建函数对象之后,函数对象默认会带有一个foo.prototype.属性。属性是一个对象属性var objNew = new foo();//创建一个新对象,他的原型指向foo.prototype objNew.x = 2; objNew,y = 3;
3、Object.create创建对象
var objCreate = Object.create({x:1})var objCreate = Object.create(null)/* *用create创建对象,传入的值,直接赋值给对象的原型链,而不是对象本身。 *传入null之后,对象的原型直接就是null,不会包含任何方法objCreate.toString显示undefined。 */
二、查找和删除
* in操作符检查对象中是否有这个属性,会继续向上查找,到原型链顶端,object.prototype
* hasOwnProperty检查对象中是否有这个属性时,只会查找对象本身,不会向上查找对象的原型链。
* 查找属性的值时,会沿着原型链查找,但是给对象赋值时,不会像原型链查找属性赋值,只会在对象本身添加或修改属性和值,原型链上的保持不变。
* delete obj.z删除对象上的属性。不会删除原型链上的属性
* 可继承原型链上的属性,但是不会修改原型链上的属性,只有继承权没有修改权。
三、对象的一些方法
1、获取属性中的所有标签:Object.getOwnPertyDescriptor(要查看的对象,’要查看的属性’)
2、configurable表示是否可配置,返回false为不可配置,true为可配置
3、propertyIsEnumerable(“检测属性”)是否可枚举属性。(for..in..遍历的时候)
4、Object.defineProperty(对象名,’属性’,{enumerable:false,value:1000}),设置自定义属性不可枚举
5、属性枚举
var o={x:1,y:2,z:3} var key; for(key in o){ console.log(key)//x,y,z }
6、只想枚举对象本身的属性,不想获取对象原型链上的属性
for(key in o){ if(obj.hasOwnProperty(key)){ console.log(key)//x,y,z } }//用hasOwnProperty过滤一下。
7、getOwnPropertyDescriptor({pro:true},’pro属性名’),查看一个属性上面都有哪些属性标签
8、给空对象设置属性
var person={}; Object.defineProperty(person,'name',{ configurable:false, writable:false, enumerable:true, value:"bos man" }) //通过Object.key(person)可获得对象上所有的key
9、对象设置多个属性
Object.defineProperties(person,{ title:{value:'fe',enumerable:true}, corp:{value:'baba',enumerable:true} }) //想赋值和修改属性,writable必须为true //想删除和修改getter和setter和修改属性标签configurable必须为false
10、 查看对象是否可扩展,Object.isExtensible(对象名)
11、设置对象不可扩展(阻止对象添加新的属性),Object.preventExtensible(对象名)
12、Object.seal(obj)将对象上所有属性的configurable设置为false
13、Object.freeze(obj)设置对象不可配置,不可写,不可删除
14、对象序列化JSON.stringify(obj),对象转换成字符串
**注:如果对象中的属性值是undefined,那么这个属性将不会出现在序列化字符串结果当中,
如果是值是NAN或Infinity,序列化之后值为null,
如果是new Date()结果为当前时间**
15、后端返回JSON数据,转换为对象的方法:JSON.parse(‘{“x”:1}’)
四、对象标签
1、proto
2、class:表示对象是哪一个类型,通过Object.prototype.toString()方式获取class
3、extensible:表示对象是否可扩展,对象上的属性是否可以被继续添加
- js面向对象总结
- js面向对象总结
- js面向对象总结
- JS面向对象(智能社面向对象知识点总结)
- JS 面向对象实现 学习总结
- [提高总结一]js面向对象
- JavaScript学习总结三:js基于原型面向对象
- JS Array(数组)本地面向对象总结和运用
- JS高程知识点总结-6(面向对象)
- js面向对象尝试
- js面向对象
- 面向对象的js
- js中的面向对象
- JS面向对象
- JS面向对象2
- 06 JS面向对象
- JS 面向对象
- JS面向对象例子
- 协程的实现
- UIView的几个枚举定义
- AtCoder Beginner Contest 057
- 如何利用Bootstrap的標籤(Tabs)和導覽列(Navigation Bar)
- EffectiveJava(36) -- 坚持使用Override注解
- js面向对象总结
- 利用winhex在NTFS文件系统下定位文件,找到其目录项和簇号等等
- imresize函数进行图像缩放及利用imrotate进行图像旋转
- 九度OJ 1113 二叉树(完全二叉树)
- gcc编译过程四步
- 用java调用oracle存储过程总结
- 递归基础题:汉诺塔
- L2-019. 悄悄关注(2017初赛)
- Java-网络编程之-Internet地址