对象

JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有属性和方法。
对象的属性:反映该对象某些特定的性质的,如:字符串的长度、图像的长宽等
对象的方法:能够在对象上执行的动作。例如,表单的“提交”(Submit),时间的“获取”(getYear)等;
JavaScript 提供多个内建对象,比如 String、Date、Array 等等,使用对象前先定义,如下使用数组对象:

var objectName =new Array();//使用new关键字定义对象
//或者
var objectName =[];


对象是一组“键值对”的集合。之间用逗号分隔.


var obj = {
 str1: 'Hello',
  str2: 'World'
}
console.log(obj.str1)
//str1: 'Hello',    键值对                
//str1                键名 
//"Hello"            键值


键名
所有对象的键名都是字符串。所以加不加引号都代表它是字符串(只能是字符串)

var obj={
    100:"键值1"
}
//调用:
//console.log(obj.100)        //不成立
console.log(obj[100])
//js中所有的点都可以替换成中括号


键值
键值可以是任何数据类型。也可以是函数

var obj={
     fn:function(x){
     console.log(x)
    }
}
//调用:
obj.fn(3)        //3


对象的引用   
格式:对象名.键值         该方法可读可写

var o1 = {};
var o2 = o1;
o1.a = 1;
o2.a                 // 1
o2.b = 2;
o1.b                 //2  


object属性的操作

 


读取属性

var obj = {
str: 'Hello World'
}
obj.str
obj['str'] 
//使用方括号必须将键名用引号引起来,否则会当做是一个变量


删除属性

var obj={ a:1,b:2,c:3}
delete obj.c                
console.log(obj)             //{a:1,b:2}
//这个关键字属性只能作用在对象上


查看所有属性(查看所有键名)

var obj = {};
obj.a = 'Hello';
obj['b'] = 'World';
console.log(Object.keys(obj))                  
//['a','b'] 返回一个数组,查看所有键名
//注意O是大写


检测数据是否在对象中

var obj={a:1,b:2,c:3}
//关键字 in
console.log("a" in obj)          //true
console.log("d" in obj)         //false

对象的遍历

var obj={a:1,b:2,c:3,d:"abc"}
var arr=Object.keys(obj)
console.log(arr)                        // ["a", "b", "c", "d"]
for (var i = 0; i < arr.length; i++) {
    console.log(obj[arr[i]])     //1 2 3 abc
}    
//先获取键名,然后通过键名去调取键值

for.. in循环

var obj={a:1,b:2,c:3}
for(var i in obj){
    console.log(i)                //遍历所有键名
    console.log(obj[i])            //遍历所有键值
}


with语句(with方法,绑定的对象并不明确。只做了解,很少用到。)
读取或设置对象中的属性

var obj = {p1: 1,  p2: 2,};
with (obj) {
     p1 = 4;
    p2 = 5;    
}    
// 等同于
obj.p1 = 4;
obj.p2 = 5;


对象中的this
this 永远指向最后调用它的那个对象。默认指向window。


一、方法调用模式
当函数被保存为一个对象的属性时,它就可称为这个对象的方法。
当一个方法被调用时,this被绑定到这个对象上。
如果调用表达式包含一个提取属性的动作(. 或 [])
那么它被称为方法调用。例如:

var name = "window";
        var obj = {
            name: "kxy",
           sayName: function() {
            console.log(this.name);
               }
        }
        obj.sayName();  //kxy 
//sayName函数作为对象obj的方法调用,所以函数体中的this就代表obj对象。


二、函数调用模式
当一个函数并非一个对象的属性时,那么它就是被当做函数来调用的。
在此种模式下,this被绑定为全局对象,在浏览器环境下就是window对象。例如:


var name = "window";
function sayName() {
console.log(this.name);
}
sayName();
//sayName以函数调用模式调用,所以函数体中的this代表window对象。


三、构造函数模式
如果在一个函数前面加上new关键字来调用,那么就会创建一个连接
到该函数的prototype成员的新对象,同时,this会被绑定到这个新对象上。
这种情况下,这个函数就可以成为此对象的构造函数。例如:

function Obj() {
    this.name = "kxy";
}
var person = new Obj();
console.log(person.name);   //kxy
//Obj作为构造函数被调用,函数体内的this被绑定为新创建的对象person


四、apply调用模式
在JS中,函数也是对象,所有函数对象都有两个方法:apply和call,
这两个方法可以让我们构建一个参数数组传递给调用函数,
也允许我们改变this的值。例如:

var name = "window";
var person = {
    name: "kxy"
};
function sayName() {
console.log(this.name);
}
sayName();                     //window
sayName.apply(person);       //kxy
sayName.apply();                //window
//当以函数调用模式调用sayName时,this代表window;
//当用apply模式调用sayName,并给它传入的第一个参数为person时
//this被绑定到person对象上。如果不给apply传入任何参数,则this代表window。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值