js基础-对象,包装类

js基础-对象,包装类

属性的增、删、改、查

增加属性: Obj.newProp = ‘what’;
删除属性: delete Obj.Prop
修改属性: Obj.newProp = ‘new’;
查询属性: Obj.name

对象的创建方法
  1. var Obj = {} //plainObject 对象字面量/对象直接量
  2. 构造函数
    1. 系统自带的构造函数 new Object()
    2. 自定义构造函数
    function addNum () {// 函数  (小驼峰命名)  
    }
    
    function AddNum() {// 构造函数 (大驼峰命名)
    }
    var add1 = new AddNum();
构造函数内部原理:

前提:new
1.在函数体前面隐式地加上this={};
2.执行this.xxx=xxx;
3.隐式地返回this。

function AddNum(){
    // var this = {}
    
    console.log(1-1)
    
    //return this
}
addNum1 = new AddNum()

当一个变量没有声明,访问会报错
当一个对象属性没有声明,访问时undefined

包装类

每当读取一个基本类型的值的时候,后台就创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据。

  • Boolean
  • String
  • Number
  • Symbol

除了 null 和 undefined,所有的原始值都有等价的、由对象包装原始值的形式表达,取而代之,null 和 undefined 常被当作一个全局对象的全局属性来使用。

原始值不能有属性和方法,当给它们添加属性的时候系统会自动进行包装类并销毁。

包装类过程
var num = 4;
num.len = 3; // 系统隐式执行
//原始值当对象用赋值,系统为了不报错会进行包装类处理
// new Number(4).len = 3; delete 执行完会销毁

console.log(num.len) //系统隐式执行
//再次访问 num.len 又会进行一次 new Number(4).len 因为不存在len这个属性 所以undefined
//new Number(4).len
var sym = new Symbol(); // TypeError: Symbol is not a constructor
// 这是因为围绕原始数据类型创建一个显式包装器对象从 ECMAScript 6 开始不再被支持。 然而,现有的原始包装器对象,如 new Boolean、new String 以及 new Number 因为遗留原因仍可被创建。

例题

1、

var str = 'abc';
str += 1;
var test = typeof(str);
if(test.length == 6) {
	test.sign = 'typeof的返回结果可能为String';
}
console.log(test.sign) // ???

2、

var Person (name, age, sex) {
    var a = 0;
    this.name = name;
    this.age = age;
    this.sex = sex;
    function sss() {
        a++;
        console.log(a);
    }
    this.say = sss;
}
 
var person1 = new Person();
person1.say(); // ???
person1.say(); // ???

 
var person2 = new Person();

person2.say(); // ???

3、

var str = 'hello';
str.len = 5;
console.log(str.len)



var str1 = new String("Hello");
str1.len = 6;
console.log(str1.len)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值