javaScript对象那些事儿(1)

从数组到对象


修改属性和方法

var hero = {};//创建一个空对象
hero.breed = 'turtle';//添加一些属性和方法
hero.name = 'Mrli';
hero.sayName = function(){
    return hero.name;
}
hero.sayName();//调用该方法
delete hero.name;//删除一个属性

使用this值

当我们处于某个对象方法内部时,还可以用另一种方法来访问同一对象属性,即该对象的特殊值this。
var hero = function(){
    name:'Mrli',
    sayName:function(){
        return this.name;
    }
}
hero.sayName();

构造函数

可用构造函数的方式来创建对象。下面看一个例子:
function Hero(){
    this.occupation = 'Ninja';
}
var hero = new Hero();
hero.occupation;
使用构造函数的好处在于,他可以创建对象时接收一些参数。下面,我们就来修改一下上面的构造函数,是它可以通过接受参数的方式来设定name属性:
function Hero(name){
    this.name = name;
    this.occupation = 'Ninja';
    this.whoAreYou = function(){
        return "I’m "+this.name+" and i'm a "+this.occupation;
    }
}
var h1 = new Hero('Jack');
var h2 = new Hero('Lucy');
h1.whoAreYou();
h2.whoAreYou();

instanceof操作符

通过instanceof操作符,我可以测试一个对象是不是由某个指定的构造函数所创建的。例如:
function Hero(){}
var h = new Hero();
var o  = {};
h instanceof Hero;//true
h instanceof Object;//true
o instanceof Object;//true

传递对象

当我们拷贝某个对象或者将它传递给某个函数时,往往传递的都是该对象的引用。因此我们在引用上所做的任何改动,实际上都会影响它所引用的源对象。
var original = {
    howmany:1
};
var copy = original;
cope.howmany;//1
copy.howmany = 100;
original.howmany;//100

同样的,将对象传递给函数的情况也是大抵如此:

var  original = {
    howmany: 100
};
var nullify = function (o){
    o.howmany = 0;
}
nullify(original);
orifinal.howmany;

对象比较

当我们对对象进行比较操作时,当且仅当两个引用指向同一个对象时为true。而如果是不同的对象,即使他们碰巧拥有相同的属性和方法,比较操作也会返回false。
下面,我们来创建两个看上去完全相同的对象:
var fido = {breed:'dog'};
var benji = {breed:'dog'};
benji===fido;//false
benji==fido;//flase
我们可以新建一个变量mydog,并将其中一个对象赋值给它。这样一来mydog实际上就指向了这个变量。
var mydog = benji;
这种情况下,mydog与benji所指向的对象是相同的(也就是说,改变mydog的属性就等同于改变benji),比较操作就会返回ture。
mydog===benji;//true
并且,由于fido是一个不同的对象,所以不能与mydog进行比较。
mydog===fido;//false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值