var obj = {
x: 123,
y: "Asdfaf",
z: true
};
// var obj1 = [234, 65, 2, 2, 3444, 111];
// var arr1 = Object.entries(obj);
// arr1=[]0,1,2,3,4,5];
var arr = Object.entries(obj);
arr=["x","y","z"];
var obj = {
x: 123,
y: "Asdfaf",
z: true
};
var arr = Object.values(obj);
arr=[123,"Asdfaf",true];
var obj = {
x: 123,
y: "Asdfaf",
z: true
};
var arr = Object.values(obj);
arr=[["x",123],["y","Asdfaf"],["z",true];
实例成员可以被重写
obj.toString = function(){
return this.x + “,” + this.y;
}
所有对象,都拥有Object的所有实例成员
var obj={
x=1234,
y="asdf"
};
console.log(obj.toString());//[object object]
默认情况下,该方法返回"[object Object]";
默认情况下,返回该对象本身
在JS中,当自动的进行类型转换时,如果要对一个对象进行转换,实际上是先调用对象的valueOf方法,然后调用返回结果的toString方法,将得到的结果进行进一步转换。
var obj={
x:13,
y:2323
}
(obj+1);-->(obj.valueOf().toString()+1);
所有函数都具有Function中的实例成员
语法:arguments:在函数中使用,获取该函数调用时,传递的所有参数
arguments是一个类数组(也称为伪数组:没有通过Array构造函数创建的类似于数组结构的对象),伪数组会缺少大量的数组实例方法
arguments数组中的值,会与对应的形参映射
function sayHello(a, b) {
console.log(this.name, this.age);
console.log(a, b);
}
var user1 = {
name: "asfd",
age: 123
};
var user2 = {
name: "546345",
age: 11
};
sayHello.apply(user1, [1, 2]);//"asfd",123
sayHello.call(user2, 1, 2);//"546345",11
call和apply的区别是传参方法不同
//绑定this指向,适用于该函数需要多次调用的情况
function sayHello(a, b) {
console.log(this.name, this.age);
console.log(a, b);
}
var user1 = {
name: "asfd",
age: 123
};
var user2 = {
name: "546345",
age: 11
};
var newFunc = sayHello.bind(user1, 1, 2);
newFunc();
newFunc();
newFunc();
newFunc();
newFunc();
newFunc();
newFunc();
通常,可以利用apply、call方法,将某个伪数组转换伪真数组。
function test() {
console.log(arguments);
//将arguments转换为真数组
var newArr = [].slice.call(arguments)
console.log(newArr);
}
//配合slice方法,返回一个真数组
test(23, 5, 6, 2, 233, 5, 6, 7);