首页前端开发HTMLJavascript对象

Javascript对象

时间2024-05-20 00:42:03发布访客分类HTML浏览93
导读:对象(Object 是属性的无序集合,每个属性都有自己的名字和值,每个属性存放一个原始值、对象或函数。 javascript的原始类型包括数字、字符串、布尔值、null、undefined。其它所有值都是对象。javascript中,数组、...

对象(Object)是属性的无序集合,每个属性都有自己的名字和值,每个属性存放一个原始值、对象或函数。

javascript的原始类型包括数字、字符串、布尔值、null、undefined。其它所有值都是对象。javascript中,数组、函数、正则表达式都是对象。

一、创建对象

### 1.1 new操作符后面跟Object构造函数

var person = new object();
    

### 1.2 对象字面量表示法

var empty = {
}
    ;
var person = {
 'first-name':'Nicholas', 'last-name':'Zakas', 'age':29}
    ;
var flight = {
 airline: 'MU', number: 2769, departure: {
 IATA: 'NKG', time: '2011-06-30 07:45', city: 'Nanjing' }
, arrival: {
 IATA: 'XIY', time: '2011-06-30 09:45, city: 'XiAn' }
}
    ;
    

二、检索

检索方法,优先使用.表示法

person['first-name'] //Nicholasflight.number //2769person['job'] //undefinedflight.status //undefined

用||运算符来填充默认值

var job = person['job'] || 'none';
    var status = flight.status || 'unkown';
    

尝试检索一个undefined值会导致异常

flight.equipment //undefinedflight.equipment.model //throw 'TypeError'flight.equipment &
    &
     flight.equipment.model //undefined

三、更新

属性存在于对象中,属属性值将被替换

person['age'] = 32;
    

如果对象没有该属性名,则该属性名将被添加到对象中

person.job = 'Software Engineer';
    

删除属性

delete person.age

删除属性不仅仅是将属性值设置为undefined,实际上从对象上移除了属性。

四、引用

对象通过引用来传值,它们永远不会被拷贝。

var x = person;
    x.job = 'Software Engineer';
    var job = person.job;
 //x和person引用同一对象,job为'Software Engineer'var a = {
}
, b = {
}
, c = {
}
    ;
 //a b c 引用不同的空对象var a = b = c = {
}
    ;
     //a、b、c引用同一空对象

五、反射

typeof操作符确定属性类型

typeof flight.number //'number'typeof flight.status //'string'typeof flight.arrival //'Object'typeof flight.manifest //'undefined'

原型链中任何属性也会产生一个值

typeof flight.toString //functiontypeof flight.constructor //'function'

另一个方法,hasOwnProperty方法

flight.hasOwnProperty('number') //trueflight.hasOwnProperty(constructor) //false

六、枚举

for in 语句遍历对象中的所有属性名。hasOwnProperty和typeof排除函数、原型链中的属性和不想要的值。

var name;
for (name in person) {
 if (typeof person[name] !== 'function') {
     console.log(name+':'+ person[name]);
 }
}
    

上面属性名出现的顺序是不确定的。如果要以特定的顺序出现,可以使用数组:

var i;
    var properties = [ 'last-name', 'fist-name', 'age'];
    var len = properties.length;
    for (i = 0;
     i 

–add

Object.prototype.bar = 1;
var person = {
 'name': 'bingdian', 'age': '25'}
for (i in person) {
     console.log(i + ':' + person[i]);
}
    //name:bingdian//age:25//bar:1

和 in 操作符一样,for in 循环同样在查找对象属性时遍历原型链上的所有属性。

由于不可能改变 for in 自身的行为,因此有必要过滤出那些不希望出现在循环体中的属性, 这可以通过 Object.prototype 原型上的 hasOwnProperty 函数来完成。

Object.prototype.bar = 1;
var person = {
 'name': 'bingdian', 'age': '25'}
for (i in person) {
 if (person.hasOwnProperty(i)) {
     console.log(i + ':' + person[i]);
 }
}
    //name:bingdian//age:25

推荐总是使用 hasOwnProperty。不要对代码运行的环境做任何假设,不要假设原生对象是否已经被扩展了。

七、删除

delete person.ageperson.age //undefined

八、通用Object属性和方法

属性

在javascript中,每一下对象都有一个constructor属性,它引用了初始化这个对象的构造函数。

方法

person.toString();
    person.valueOf();
    person.hasOwnProperty('age');
    

//如果isPrototypeOf()所属的对象是参数的原型对象,则返回true

var o = {
}
    ;
    console.log(Object.prototype.isPrototypeOf(o));
     //true o.constructor == Objectconsole.log(Object.isPrototypeOf(o));
     //falseconsole.log(o.isPrototypeOf(Object.prototype));
     //falseconsole.log(Function.prototype.isPrototypeOf(Object));
     //true Object.constructor == Function

九、减少全局变量污染

var APP = {
}
    ;
APP.person = {
 'first-name':'Nicholas', 'last-name':'Zakas', 'age':29}
    ;
APP.flight = {
 airline: 'MU', number: 2769, departure: {
 IATA: 'NKG', time: '2011-06-30 07:45', city: 'Nanjing' }
, arrival: {
 IATA: 'XIY', time: '2011-06-30 09:45, city: 'XiAn' }
}
    ;
    

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Javascript对象
本文地址: https://pptw.com/jishu/663794.html
Javascript函数 什么是HTML5前端开发,要学习哪些技术?

游客 回复需填写必要信息