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获取属性值);