javascript-对象-壹

JS可以说一切皆为对象

js中数据类型分为两种,基本数据类型和引用数据类型。

基本数据类型:

undefined, null, number, string, boolean。

引用数据类型:

object(Array,Object, Function...)

区别:

1.基本数据类型不能加属性,

var str = "";
str.name = "string";
console.log(str.name); //undefined

2.基本数据类型的赋值是值复制,引用类型是地址指针复制,

var person1 = {
    name: '小明',
    age: '18',
    sex: 'male',
};
var person2 = person1;
person2.name = '小陈';
console.log(person2.name); //'小陈'
console.log(person1.name); //'小陈'

//引用类型的赋值有陷阱,所以经常先进行转换再赋值

//方法1
person2 = Object.assign({}, person1);
person2.name = '小陈';

//方法2
person2 = JSON.parse((JSON.stringify(person1));
person1.name = '小陈';

3.基本数据类型函数参数为值传递, 引用类型是地址指针传递。

var obj = {a: 'a'};
var func = function(arg){
    arg.b = 'b';
}
func(obj);
console.log(obj); //{a: "a", b: "b"}

//传入对象,改变对象本身,造成混乱,维护不便,这不太符合函数式编程思维

//改变
var func1 = function(arg){
    var obj = Object.assign({}, arg);
    obj.b = 'b';
    return obj;    //通常用return来完成赋值
}
obj = func1(obj);

小知识:函数式编程第一要求一输入对应一输出,不会因为任何改变函数内部,即系统不会改变。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值