2019web前端javascript--入门级理解对象和包装类

写在前面:因为还没开始工作,可能有的部分有错,希望大家能指点出来,这是我看渡一的视频总结的笔记,所有的示例都来自视频,我算是一个搬运工了吧哈哈哈视频讲的很好,强烈推荐大家去看一看ヾ(◍°∇°◍)ノ゙

一.对象

(基础的变量类型:引用值)

1.对象的创建方法

1.字面量法 var obj = {};


2.构造函数法(可创造多个一样的对象)

(1)系统自带的构造函数

Object(),Number(),Array()

var num = new Number()


(2)自定义

function Person (){}

var person = new Person

//Person是函数,person是对象,函数命名方式遵守大驼峰方法


(3)对象的增删改查

增改查: 对象.属性

删: delete 对象.属性

注:构造函数的结构和函数没有任何区别

示例
/*    function Car(color) {
    this.color = color;//输入参数,使函数灵动起来
    this.name = 'BMW';
    this.height = '1400';
    this.lang = '4900';
    this.weight = 1000;
    this.health = 100;
    this.run = function () {
        this.health --;
    }

}
var car = new Car('red');
var car1 = new Car('green');*/

/*  //各改各的,两个人
car.run();
car.health;//99
car1.health;//100
*/

构造函数创建的每个对象,互不干扰,只是初始状态长得一样

注:

(1)当一个对象的属性没有时,会打印undefined,不会报错

(2)在内部添加属性 :

在外部添加属性 =

2.构造函数内部原理


1.在函数体最前面隐式的加上this={}

2.执行this.xxx = xxx;

3.隐式的返回this

(有new才执行这三步!!)

有new就不可能返回原始值,会自动忽略掉原始值

示例
function Student(name,age,sex) {
/*   
1.var this ={
2.往this空对象里传入属性
Student的AO{this:{name:'传入的参数'}}...
name :''
age :''
sex :''
};
*/
this.name = name;
this.age = age;
this.sex = sex;
this.grade = 2017;
// 3.return this;
}
var student = new Student('zhangsan',18);
//有了new就能把 函数->构造函数

二.包装类

1.原始值是不能有属性和方法的
只有对象才有属性方法

对象有(obj,function,array)


2.不是所有数字都是原始值

var num = new Number(123)
数字的对象能参与运算,但是运算之后会回归为数(原始值)?未验证

字符串,布尔类型也同上

3.原始值是不能有属性和方法的,但是有了包装类就可以调用了

4.包装类使用方法:

将用new的方式给原始值添加属性,最后删除添加的结果
自定义的属性:原始值.属性 返回undefined
系统自带属性:原始值.属性 正常返回结果


例1.

var num = new Number(123);

可随意添加属性,也可参与运算

undefined和null都不能设置属性


例2.

var num1 = 4;
num1.len = 3;
//①new Number(num).len = 3;新建一个数字对象,让数字对象的len=3;   把结果扔掉 delete

//②new Number(num).len,查看,已经删除了,不存在了
console.log(num1.len);//undefined

①②是两个不同的对象

例3.

//数组本身就有截断属性
var str = 'abcd';
str.length = 2;
//new String('abcd').length = 2; delete//销毁的是新建的东西,没有销毁str的东西
//str没有length截断属性

console.log(str);//abcd
//new String ('abcd').length,这是系统自带的属性,不会销毁
console.log(str.length)//4

例4.

var str = 'abc';
str += 1;//str = abc1
var test = typeof (str);//test == 'string'
if(test.length == 6){
    //new String('abc').sign='typeof的返回值可能为String' 然后delete
    test.sign = 'typeof的返回值可能为String';
}
//new String('abc').sign
console.log(test.sign);//undefined

原始值赋属性值的话,要调用包装类,相当于赋了跟没赋一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值