当前位置 : 主页 > 网络编程 > JavaScript >

js面向对象编程-对象章节

来源:互联网 收集:自由互联 发布时间:2021-06-30
对象的调用方式,对象的属性删除方式,构造器函数,apply和call以及arguments.callee // 调用对象的属性可以使用'.'也可以使用[]的方法调用 var book = { name :'Catch-22', published:1961, author:{ first
对象的调用方式,对象的属性删除方式,构造器函数,apply和call以及arguments.callee
// 调用对象的属性可以使用'.'也可以使用[]的方法调用
    var book = {
        name :'Catch-22',
        published:1961,
        author:{
            firstname:'Joseph',
            lastname:'Heller'
        }
    }
console.log(book['author']['lastname'])
console.log(book['author'].lastname)



// 可以通过delete来删除hero.name这个属性 
var hero = {};
hero.breed = 'turtle';
hero.name = 'Leonardo';
hero.sayName = function(){return hero.name;};
delete hero.name 


// 构造器函数 
function Hero(name){
    this.name = name;
    this.occupation ='Ninja';
    this.whoAreYou = function(){
        return "我是"+this.name +"我是一个 "+this.occupation;
    }
}
var hero1 = new Hero('郑闪闪');
hero1.whoAreYou();

var h = Hero('Lenardo');
typeof h;  //undefined 这个没有使用new,所以h就是Hero的函数函数值,由于
// Hero没有函数返回值,而默认的返回值是undefined,所以h的值为undefined

// caller属性,这个属性会返回一个调用该函数对象的外层函数引用
function A(){return A.caller;}
function B(){return A();}

// 由于我们在调用say()函数的对象方法call()时传递了两个参数,对象my_obj和'Dude,扎样一来,
// 当say()别调用时,其中的this被自动设置成了my_obj对象的引用
// apply() 和call()的工作方式基本相同,唯一不同之处在于参数的传递形式
var some_obj ={
    name:'Nnja',
    say:function(){
        return 'I am' +this.name;
    }
}

my_obj={name:'Scripting guru'};
some_obj.say.call(my_obj,'Dude'); //"I amScripting guru"



// arguments.callee,该属性引用的是当前被调用的函数对象
(function(count){
    if(count <5){
        alert(count);
        arguments.callee(++count);
    }
})(1)

split() 
var csv = 'one,two,three,four';
csv.split(',');  //["one", "two", "three", "four"]
网友评论