js笔记——对象、包装类

对象

对象的基本知识

  1. 万事万物皆对象
  2. 属性的增删改查
var xiaoming={
    name:'xiaoming',
    age : 18,
    sayName:function(){
        console.log(this.name);
    }
}
xiaoming.sayName();// xiaoming        访问属性
xiaoming.wife='xiaozhang';// 增加属性
console.log(xiaoming.wife);// xiaozhang
delete xiaoming.age;// 删除属性
console.log(xiaoming.age);// undefined
xiaoming.wife = 'xiaoli';// 修改属性
console.log(xiaoming.wife);// xiaoli

对象的创建方法

1. var obj = { }   planObject 对象字面量/对象直接量
2. 构造函数创建方法:
  • 系统自带的构造函数new Object()、new Array()、new String()等等
    注意:var obj = new Object();和var obj = { };没有区别
  • 自定义构造函数(遵循大驼峰式命名规则)
function Person(){
}
var people = new Person();// 创建对象
  • 构造函数的内部原理
  1. 在函数体前面隐式的加上this = {};
  2. 执行this.xxx = xxx ;
  3. 隐式返回this
function People(name, age) {
    //var this = {};
    this.name = name;
    this.age = age;
    //return this;
}
var people=new People('xiaoming',18);
console.log(people);// People {name: "xiaoming", age: 18}

但是如果要显式的返回一个值的话,返回引用类型会覆盖,返回原始值则不会

function People(name, age) {
    this.name = name;
    this.age = age;
    return new Object();
}
var people=new People('xiaoming',18);
console.log(people);// {}
function People(name, age) {
    this.name = name;
    this.age = age;
    return 123;
}
var people=new People('xiaoming',18);
console.log(people);// People {name: "xiaoming", age: 18}
3. Object.create(原型)方法

包装类

原始值没有属性和方法,但是如果强行添加属性或者访问属性的话,系统就会新建一个包装类,然后在包装类上进行操作,操作完成后进行销毁。

var num = 3;
// 原始值没有length属性,系统就新建一个Number()对象来添加length属性,但是操作完成后系统会自动删除该对象
// 相当于 var obj = new Number(3);obj.length = 4;delete obj;
num.length=4;
// 再次访问相当于再次新建一个Number对象,注意上面创建的对象已经被销毁
// new Number(3).length;
console.log(num.length);// undefined
var str = 'abcd';
//相当于 var obj = new String('abcd');
// obj.length = 2;
// delete obj;
str.length = 2;
// 相当于 var obj = new String('abcd');
// console.log(obj.length);
// delete obj;
console.log(str.length);// 4

例题:

var str = 'abc';
str+=1; //str = 'abc1';
var test = typeof str;//test = 'string';
if(test.length == 6){
// var obj = new String(;'abcd1');
// obj.sing = true;
// delete obj;
test.sign= true;
}
// var obj = new String(;'abcd1');
// console.log(obj.sing);
// delete obj;
console.log(test.sign);// undefined
function Person(name,age,sex){
    var a = 0;
    this.name = name;
    this.age = age;
    this.sex = sex;
    function test(){
        a++;
        console.log(a);
    }
    this.say = test;
}
var p1=new Person();
p1.say();// 1
p1.say();// 2
var p2=new Person();
p2.say();// 1
// 主要考察闭包,在每次调用构造函数的时候,都会重新生成AO对象,
// 所以每次都会创建一个新的a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值