JavaScript之对象、包装类

本文探讨了JavaScript中的对象创建,包括使用花括号{}、构造函数(如System自带及自定义构造函数)以及Object.create方法。同时深入解析了构造函数的内部原理,即在函数开始时设置`this`并分配属性。此外,还介绍了JavaScript的包装类,如new String(), new Boolean(), new Number()及其相关测试案例。" 112627858,10538833,Power Query技巧:标题处理与格式修正,"['数据清洗', 'Power Query', 'Excel', 'TXT文件']

object,{}

1.对象属性的增删改查

var mrDeng = {
      name: 'MrDeng',
      age: 40,
      sex: "male",
      health: 100,
      smoke: function () {
        console.log('smoke!');
        this.health--;
      },
      drink: function () {
        console.log('drink!');
        this.health--;
      }
    }

    console.log(mrDeng);
    console.log(mrDeng.smoke(), mrDeng.health);
    //属性的增删改查
    mrDeng.child = 'xiaodeng';
    console.log(mrDeng.child);
    delete mrDeng.age;
    console.log(mrDeng);
    mrDeng.child = 'xiaodeng02';
    console.log(mrDeng.child);

2.对象创建方法
1.var obj = {}
2.构造函数
1)系统自带 new Object();Array(); Number(); Boolean(); String(); Data();
2)自定义
3.Object.create(原型)方法

	// var obj = new Object();
    // obj.name = 'abc';
    // obj.sex = 'female';

    function Car(color) {
      this.color = color;
      this.name = 'BMW';
      this.height = '1400';
      this.lang = '4900';
      this.weight = 1000;
      this.run = function () {
        this.health--;
      }
    }
    var car = new Car();
    var car1 = new Car();

    var car2 = new Car('red');
    var car3 = new Car('green');
    
    // 两个不同的对象
    // car.name = 'ms';
    // car1.name = 'mz';

构造函数内部原理

  • 在函数体最前面隐式的加上 this = {}
  • 执行this.xxx = xxx;
  • 隐式的返回this;
function Student(name, age, sex) {
	  // var this = {};
      this.name = name;
      this.age = age;
      this.sex = sex;
      this.grade = 2017;
      // return this;
    }
    var student = new Student('xiaoming', 18, 'male');
    console.log(student);

包装类
new String();
new Boolean();
new Number();

	var str = 'abcd';
    str.length = 2;
    // new String('abcd').length = 2; delete;
    console.log(str);
	// abcd
	
    var arr = ['a', 'b', 'c', 'd'];
    arr.length = 2;
    console.log(arr);
	//['a', 'b']

测试1:

var str = "abc";
    str += 1; // abc1
    var test = typeof (str); //String
    if (test.length == 6) {
      test.sign = "typeof返回结果可能是String";
      // new String(test).sign = "..."; delete;
    }
    console.log(test.sign); 
    //undefined

测试2:

function employee(name, code) {
      this.name = "wangli";
      this.code = "A001";
    }
    var newmp = new employee("zhangming", "A002");
    console.log('姓名:' + newmp.name);
    console.log('代码:' + newmp.code);

    // this.zhangming = "wangli";
    // this.A002 = "A001";

    // 姓名:"wangli"
    // 代码:"A001"

测试3:

function 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 oPerson = new Person(); 
    oPerson.say(); // 1
    oPerson.say(); // 2
    var oPerson1 = new Person(); 
    oPerson1.say(); //1

测试4:

var x = 1,
      y = z = 0;

    function add(n) {
      return n = n + 1;
    }
    y = add(x);

    function add(n) {
      return n = n + 3;
    }
    z = add(x);

    console.log(x, y, z);

    // x:1
    // y:0, 4
    // z:0, 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值