js基础-对象,包装类

本是古典 何须时尚 2023-07-18 09:34 84阅读 0赞

js基础-对象,包装类

属性的增、删、改、查

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

对象的创建方法

  1. var Obj = {} //plainObject 对象字面量/对象直接量
  2. 构造函数

    1. 系统自带的构造函数 new Object()
    2. 自定义构造函数

    function addNum () {// 函数 (小驼峰命名)

    1. }
    2. function AddNum() {// 构造函数 (大驼峰命名)
    3. }
    4. var add1 = new AddNum();
构造函数内部原理:

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

  1. function AddNum(){
  2. // var this = {}
  3. console.log(1-1)
  4. //return this
  5. }
  6. addNum1 = new AddNum()

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

包装类

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

  • Boolean
  • String
  • Number
  • Symbol

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

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

包装类过程
  1. var num = 4;
  2. num.len = 3; // 系统隐式执行
  3. //原始值当对象用赋值,系统为了不报错会进行包装类处理
  4. // new Number(4).len = 3; delete 执行完会销毁
  5. console.log(num.len) //系统隐式执行
  6. //再次访问 num.len 又会进行一次 new Number(4).len 因为不存在len这个属性 所以undefined
  7. //new Number(4).len
  8. var sym = new Symbol(); // TypeError: Symbol is not a constructor
  9. // 这是因为围绕原始数据类型创建一个显式包装器对象从 ECMAScript 6 开始不再被支持。 然而,现有的原始包装器对象,如 new Boolean、new String 以及 new Number 因为遗留原因仍可被创建。
例题

1、

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

2、

  1. var Person (name, age, sex) {
  2. var a = 0;
  3. this.name = name;
  4. this.age = age;
  5. this.sex = sex;
  6. function sss() {
  7. a++;
  8. console.log(a);
  9. }
  10. this.say = sss;
  11. }
  12. var person1 = new Person();
  13. person1.say(); // ???
  14. person1.say(); // ???
  15. var person2 = new Person();
  16. person2.say(); // ???

3、

  1. var str = 'hello';
  2. str.len = 5;
  3. console.log(str.len)
  4. var str1 = new String("Hello");
  5. str1.len = 6;
  6. console.log(str1.len)

发表评论

表情:
评论列表 (有 0 条评论,84人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Js-包装

    在js中提供了三个包装类,通过三个包装类可以将基本数据类型的数据转换为对象。分别如下: 1.String() —可以将基本数据类型的字符串转换为String对象

    相关 包装对象

    字符串、布尔值、数字都是可以调用方法的,尤其是字符串,有很多的方法可以调用,那么他们的原理是什么呢? 1、字符串的原型上的方法 var str = new St

    相关 java面向对象——包装

    在某些场合(集合)中要求所有的数据内容都是对象,但java中8种基本数据类型定义的变量并不是对象,为了满足该场合的需求就需要对变量进行对象化处理,此时借助包装类 常用的包装