javaScript对象那些事儿(1)

来源:互联网 发布:查淘宝数据有哪些插件 编辑:程序博客网 时间:2024/05/22 12:21

从数组到对象


修改属性和方法

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;//trueh instanceof Object;//trueo instanceof Object;//true

传递对象

当我们拷贝某个对象或者将它传递给某个函数时,往往传递的都是该对象的引用。因此我们在引用上所做的任何改动,实际上都会影响它所引用的源对象。
var original = {    howmany:1};var copy = original;cope.howmany;//1copy.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;//falsebenji==fido;//flase
我们可以新建一个变量mydog,并将其中一个对象赋值给它。这样一来mydog实际上就指向了这个变量。
var mydog = benji;
这种情况下,mydog与benji所指向的对象是相同的(也就是说,改变mydog的属性就等同于改变benji),比较操作就会返回ture。
mydog===benji;//true
并且,由于fido是一个不同的对象,所以不能与mydog进行比较。
mydog===fido;//false
0 0