JavaScript的对象及正则(RegExp)对象
2017-09-14 20:22
281 查看
创建对象
1/通过var obj={ } 对象字面量(object literal)法
2/通过new object( )创建对象
3/通过构造函数创建对象
通过instanceof操作符可以检测一个对象是否由某个指定的构造器函数
4/通过Object.create来创建对象
属性操作
查询属性
①对象名.属性名②对象名[属性名]③当处于某个对象方法内部的时候,可以通过this来访问同一对象的属性
添加属性
修改制定属性
删除属性:通过delete删除制定属性
只能删除自身属性,不能删除继承属性。
要删除继承属性,只能从定义它属性的原型对象上删除它,而且只会影响到
delete不能删除那些可配置性为false的属性
遍历属性:通过for in遍历属性
通过in检测对象上是否有某个属性
访问方法
对象名.方法名( ) 如果对象名.方法名的形式,将返回定义函数的字符串
对象结构
对象属性特征
数据属性:4个表述行为的特征:
[[configurable]]
表示是否能通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。直接在对象上定义的属性,他们的默认值为true
[[Enumerable]]
表示能否通过for in循环返回属性。代表属性是否可以枚举。直接在对象上定义的属性默认值为true
[[writable]]
表示能否修改属性的值。默认值为true
[[value]]
包含这个属性的数据值。读取属性值的时候,从这个位置读取。
写入属性值的时候,把新值保存在这个位置。这个特性的默认值为undefined
如果属性不可配置,但是可以把writable的true变成false,但不能将false变为true
存取器属性:get——获取属性的值 set——设置属性的值
使用
//创建一个对象
Object.defineProperty(obj,"x".{
value:1,
writable:true,
enumerable:true,
configurable:true
});
//创建多个对象
var person={};
Object.defineProperties(person,{
'username':{
value:'king',
writable:true,
enumerable:true ,
configurable:true
},
age:{
value:12,
writable:false
}
});
console.log(Object.getOwnPropertyDescriptor(person,"username"));
//得到对象属性描述
属性描述 __proto__:null, //强制没有继承而来的属性 IE不支持
三个相关对象特性
1/原型(prototype)
对象的原型指向另外一个对象,本对象的属性继承它自己的原型对象
通过对象字面量创建的对象使用Object.prototype作为它们的原型
通过new创建的对象使用构造函数的prototype属性作为他们的原型
通过Object.create()创建的对象使用第一个参数(也可以是null)作为它们的原型
检测是否为原型对象:console.log(obj.isPrototypeOf(obj1));
2/对象的类(class)
一个表示对象类型的字符串,可以通过对象的toString()方法间接查询
3/对象的扩展标记(extensible flag)
指明了是否可以向该对象添加新属性
内建对象之正则(RegExp)对象
语法:var patt=new RegExp(pattern,modifiers);
var patt=/pattern/modifiers; /模式/模式修饰符
常用修饰符
模式
1/通过var obj={ } 对象字面量(object literal)法
var obj1={x:3,y:6,z:7} var obj2={ 'x':1, 'y':2, username:'king', 'for':'Javascript关键字必须放到引号之间' 'first-name':'queen', married:true, test:null, test1:undefined, salary:12.3, person:{ username:'king', age:12, addr:'peking', } };
2/通过new object( )创建对象
var obj3=new object();//创建一个空对象,{} var arr=new Array();//空数组[] var date=new Date();//日期时间对象 var reg=new RegExp('js');//创建正则对象
3/通过构造函数创建对象
function Test(){ } var obj4=new Test(); var obj4=Test();//意为运行该函数 function Test1(num1,num2) { this.n1=num1; this.n2=num2; } var obj5=new Test1(5,6);
通过instanceof操作符可以检测一个对象是否由某个指定的构造器函数
alert (obj5 instanceof Test1); //输出true
4/通过Object.create来创建对象
var obj6=Object.create( {x:1} ); var obj7=Object.create(null); //不会继承 var obj8=Object.create(Object.prototype); //创建一个普通的空对象
属性操作
查询属性
①对象名.属性名②对象名[属性名]③当处于某个对象方法内部的时候,可以通过this来访问同一对象的属性
var person={ username:'king', age:12, salary:1200, addr:'peking', sex:'男' }; //查询属性 console.log('用户名为'+person.username+'\n'+'性别'+person.sex); console.log('薪水:'+person['salary']+'\n'+'地址:'+person['addr']) //如果属性不确定需要使用[] var key='username'; console.log(person[key]) //不能加'' function PersonInfo(name,age,sex){ this.name=name; this.age=age; this.sex=sex; } var person1=new PersonInfo('king',34,'男'); console.log(person1.name+person['sex'])
添加属性
var obj={}; //空对象 obj.username='king'; obj.age=12; obj.addr='peking'; obj['test']='this is a test'; console.log(obj.username+'\n'+obj.age+'\n'+obj.addr+'\n'+obj['test']);
修改制定属性
var obj={}; //空对象 obj.username='king'; obj.age=12; obj.addr='peking'; obj['test']='this is a test'; console.log(obj.username+'\n'+obj.age+'\n'+obj.addr+'\n'+obj['test']);
删除属性:通过delete删除制定属性
delete obj.test;
只能删除自身属性,不能删除继承属性。
要删除继承属性,只能从定义它属性的原型对象上删除它,而且只会影响到
delete不能删除那些可配置性为false的属性
遍历属性:通过for in遍历属性
var obj1={ x:1, y:2, test:'this is a test' }; for(var p in obj1){ console.log(p+'\n' );} // 输出内容为 x y test
通过in检测对象上是否有某个属性
function foo(){}; var obj=new foo(); obj.x=1; console.log('x' in obj);//可访问原型 console.log(obj.hasOwnProperty('x'));//不访问原型
访问方法
对象名.方法名( ) 如果对象名.方法名的形式,将返回定义函数的字符串
var obj2={ username:'king', age:12, sayHi:function(){ return 'say Hi';}, info:function(){ return '用户名'+this.username+'\n'+'年龄:'+this.age+'\n地址:'+this.addr;} }; console.log(obj2.sayHi()); console.log(obj2.info());
对象结构
对象属性特征
数据属性:4个表述行为的特征:
[[configurable]]
表示是否能通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。直接在对象上定义的属性,他们的默认值为true
[[Enumerable]]
表示能否通过for in循环返回属性。代表属性是否可以枚举。直接在对象上定义的属性默认值为true
[[writable]]
表示能否修改属性的值。默认值为true
[[value]]
包含这个属性的数据值。读取属性值的时候,从这个位置读取。
写入属性值的时候,把新值保存在这个位置。这个特性的默认值为undefined
如果属性不可配置,但是可以把writable的true变成false,但不能将false变为true
存取器属性:get——获取属性的值 set——设置属性的值
使用
//创建一个对象
Object.defineProperty(obj,"x".{
value:1,
writable:true,
enumerable:true,
configurable:true
});
//创建多个对象
var person={};
Object.defineProperties(person,{
'username':{
value:'king',
writable:true,
enumerable:true ,
configurable:true
},
age:{
value:12,
writable:false
}
});
console.log(Object.getOwnPropertyDescriptor(person,"username"));
//得到对象属性描述
属性描述 __proto__:null, //强制没有继承而来的属性 IE不支持
三个相关对象特性
1/原型(prototype)
对象的原型指向另外一个对象,本对象的属性继承它自己的原型对象
通过对象字面量创建的对象使用Object.prototype作为它们的原型
通过new创建的对象使用构造函数的prototype属性作为他们的原型
通过Object.create()创建的对象使用第一个参数(也可以是null)作为它们的原型
检测是否为原型对象:console.log(obj.isPrototypeOf(obj1));
2/对象的类(class)
一个表示对象类型的字符串,可以通过对象的toString()方法间接查询
3/对象的扩展标记(extensible flag)
指明了是否可以向该对象添加新属性
内建对象之正则(RegExp)对象
语法:var patt=new RegExp(pattern,modifiers);
var patt=/pattern/modifiers; /模式/模式修饰符
常用修饰符
模式
相关文章推荐
- 详解JavaScript正则表达式之RegExp对象
- javascript正则表达式 —— RegExp 对象
- JavaScript学习笔记-正则表达式(RegExp对象)
- Javascript中的“正则表达式对象”与“全局RegExp对象”
- 说说 JavaScript 正则表达式(RegExp 对象)
- JavaScript语法入门系列(七) 类和对象(正则表达式RegExp)
- 好好学一遍JavaScript 笔记(七)——RegExp对象与常用正则
- JavaScript对象之正则表达式-RegExp
- 好好学一遍JavaScript 笔记(七)——RegExp对象与常用正则
- 详解JavaScript正则表达式之RegExp对象
- JavaScript对象之正则表达式-RegExp
- 使用javascript的RegExp对象(正则)
- 轻松学习JavaScript十四:JavaScript的RegExp对象(正则表达式)
- JavaScript RegExp(正则表达式) 对象
- javascript正则表达式之二-RegExp对象
- 理顺 JavaScript (19) - 正则表达式对象 RegExp
- javascript正则表达式(1)——RegExp对象与常用字符
- javascript 正则对象(RegExp)方法
- Javascript 正则表达式RegExp对象
- JavaScript 正则表达式 RegExp 对象