js学习笔记(六) JavaScript

JavaScript 的对象

Object是js 中的重要概念,js的对象由花括号{}包含,其中以key:value对的形式存在,其中key为键,value可以是任意的数据类型,每一键值对儿由逗号分开,
- 对象中储存数据和函数(方法);
- 对象中包括属性和方法(),可以使用[]方括号obj['key']的方式和.点的方式obj.key()/obj.key的方式来访问属性值和方法。

let people = {
    name:'tom',  //字符串属性
    age: 18,     //数字
    sports: ['bike','swim','sleep'], //数组
    hello: ()=> console.log('hello world'), //函数  箭头表达式
    say: ()=> 'I am book' ,   //return 
    old: function(){console.log('old stand')},
    //老标准的方法,函数表达式
    es6(){console.log('new stand neednt :')},
    //新标准的方法不需要:冒号,不需要键了,直接定义函数,只能用函数表达式 
    //定义: method(){方法内容}


}

console.log(people.name)
console.log(people['age']) //键需要变温字符串索引,类似python的字典
people.hello()   //点(作用域?)调用对象的方法
people['hello']()  //[]索引调用对象方法
people.es6()     //新标准不用冒号的 

this指针

this指针指代对象本身,左右与对象内部,可以为对象内部的方法传递对象的属性。

let me = {
    name: 'tom',
    age : 15,
    sayHello(){console.log(`I am ${this.name}`)},  // this 指针可以取到函数外的值传进来,这些值都属于this指代的me对象,等价于me.name。
} 
let she = {
    name: 'week',
}
she.sayHello = me.sayHello;   //she对象新增方法,等于me对象的一个方法,这时候this指针就会变为指向she。
she.sayHello() //输出的是week

Getter取值 && Setter赋值

如果我们希望在后来动态的改变对象中的属性,我们就需要使用相应的方法来接收外部数据并进行设置。
set change(outer_argvs){this._changes = outer_argvs}
get var(){return this_vars}
需要使用set设置关键字和get读取关键字

let person = {
  _name: 'Tom',   //下滑线意味着不直接从外部接触
  _age: 137,  
 set age(newage){    
    if(typeof newage ==='number'){
    this._age=newage;   //设置新值形如 obj.age=num
    console.log(`newage is setted ${newage}`)}
    else{console.log('Invalid input')}
   },
get age(){return this._age}    //取值方法,可从外部直接取出值 形如obj.age

};
// set 和get方法可以直接从外部设置`=`或者读取obj内部的值,方便。
person.age =11     //设置新值,调用了内部set的方法直接赋值
console.log(person.age)  //直接取出值




tips
1.$取值的时候需要用反引号:my name is ${this.name}而不是引号;
2.js对象和json数据格式有区别,js中对象为属性:value; 而json中为key:value,key需为字符串加引号“”;
3. js中的JSON方法包括JSON.stringify()将js对象转为json格式,和JSON.parse()将json格式数据转为js对象(可以用obj.attri获取属性值);