前言:有时候我们需要操作对象,比如将对象类型转换成其他数据类型(字符串,数组等),有时候需要进行复制拷贝(表格编辑业务)。
创建对象:
1:var person1 = new Object(); //创建了一个新的空的对象
person1.name = "jimmy";
2:var obj = { name:'jimmy' }
3:
构造函数
function Person(name,age){
this.name = name;
this.age = age;
this.sayHi = function () {
console.log("hello");
};
}
var p = new Person("jimmy",18);
es6对象方法:
函数创建对象
function f(x, y) {
return {x, y};
}
// 等同于
function f(x, y) {
return {x: x, y: y};
}
f(1, 2) // Object {x: 1, y: 2}
下面一样的
function getPoint() {
const x = 1;
const y = 10;
return {x, y};
}
getPoint()
// {x:1, y:10}
定义拼接key对象:
let propKey = 'foo';
let obj = {
[propKey]: true,
['a' + 'bc']: 123
};
注意,属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串[object Object]
,这一点要特别小心。
使用对象中括号时,需要【】里是个字符串
var obj = {
a: 3
}
console.log(obj['a']);
或者
var obj = {
'a': 3
}
console.log(obj[a]);
对象类型转换:
对象转数组:
array.from:
const someNumbers = { '0': 10, '1': 15, length: 2 };
Array.from(someNumbers, value => value * 2); // => [20, 30]
或者下面的遍历方法
对象转字符串:
JSON.stringify(jsonobj); //可以将json对象转换成json对符串
const obj = {
id: 0,
name: '张三',
age: 12
}
const objToStr = JSON.stringify(obj)
console.log('obj:', obj)
console.log('objToStr:', objToStr)
对象的遍历:
Object.keys():遍历对象的key属性,生成一个数组,Object.keys()
只返回自己的属性键:
Object.values():遍历对象的value属性值,生成一个数组。
Object.entries():遍历对象每一项,生成一个数组。
对象的合拼:
var obj1= {'a': 1};
var obj2= {'b': 1};
var c = $.extend(obj1, obj2);
console.log(obj1); // {a: 1, b: 1} obj1已被修改
对象的拷贝:
Object.assign(target, ...sources)
super关键词:
this
关键字总是指向函数所在的当前对象,ES6 又新增了另一个类似的关键字super
,指向当前对象的原型对象。
const proto = {
foo: 'hello'
};
const obj = {
foo: 'world',
find() {
return super.foo;
}
};
Object.setPrototypeOf(obj, proto);
obj.find() // "hello"
注意,super
关键字表示原型对象时,只能用在对象的方法之中,用在其他地方都会报错。