美文网首页JavaScript基础教程程序员
JS(十二)对象,包装类(下)

JS(十二)对象,包装类(下)

作者: StevenTang | 来源:发表于2018-03-13 00:18 被阅读18次

写在最前面

构造函数内部原理

  • 在函数体最前面隐式的加上this = {}
  • 执行this.xxx = xxx
  • 隐私的返回this
function Student(name,age,sex){
    //第一步 在函数体最前面隐式的加上this = {}
    //var this = {};
    //AO{this:{
    //    name:"",
    //    age :
    //}}
    this.name = name;
    this.age = age;
    this.sex = sex;
    this.grade = 2017;
    //最后一步隐私的返回this
    //return this;
}
//前提是new
var student = new Student('zhangsan',18,'male');
function Person (name,height){
    //var this ={}; 
    this.name = name;
    this.height = height;
    this.say = function(){
        console.log(this.say);
    }
}

//一旦new Person();
//里面就有个var this = {};

console.log(new Person('xiaowu',180).name);
//打印xiaowu
//我们既然知道有了隐私的三步那我们来模拟一下
function Person(name,height){
    var that = {};
    that.name = name;
    that.heigth = heigth;
    return that;
}
var person = Person("xiaowu",180);
var person1 = Person("xiaozhao",170);

//也可以简单的模拟一下

包装类

var num = 123;
//这个是个原始值.原始值是不能有属性和方法的.

那么数字都是是原始值?

不对,只有原始值数字才是原始值

var num = new Number(123);
//打印出来是Number{[[PrimitiveValue]]:123}
//对象的形式返回
//也可以增加属性
num.abc = "a";
console.log(num.abc)//打印出来a
//在num,就看到在num里面多了num.abc里面的属性
//但是它也可以计算
num*2 == 246;

String 和boolean也是一样的

小知识

undefined 和null不能有属性

var num = new Number(123);
var bol = new boolean("true");
var str = new String('abcd');

结论 : 原始值不能说属性和方法,对象才可以有

那么我来看看下面的例子

var str = "abcd";
str.length//打印出来4

为什么这个原始值的长度可以访问,但是明确又规定了原始值是没有属性和方法的

str.abc = "a";

上面我们试着给str附上属性和属性值,结果没有报错,然后我们访问这个属性,也没有结果。

原始值是不会有方法的,但是他为什么能调用呢,因为他经历了一个过程,叫包装类

var str = "String";

str.length = 6;
//为什么可以 因为在执行方法的时候,电脑隐式的给你 new Numbar(str)
//之后在str.length = 6
//执行完之后在给你销毁掉delete
//以上就是包装类

相关文章

  • JS(十二)对象,包装类(下)

    写在最前面 构造函数内部原理 在函数体最前面隐式的加上this = {} 执行this.xxx = xxx 隐私的...

  • JS(十一)对象,包装类(上)

    写在最前面 对象 属性的增,删,改,查 对象的创建方法字面量构造函数系统自带new object(),array;...

  • 对象、包装类

    对象 1、用已学的知识来描述一下对象: 2、属性的增、删、改、查 对象的属性,没定义就访问时不会报错,会返回und...

  • 对象,包装类

    对象:对象是包含属性和方法的集合体; javascript支持三种对象: 1.内置对象 2...

  • js包装对象

    ECMAScript 提供了 3 个特殊的引用类型:Boolean、Number和 String。这些类型与其他引...

  • js 包装对象

    原因由于s是一个字符串,在执行第二行中,s.len = 4;;时生成一个临时对象,临时对象在执行完之后则被销毁。故...

  • JS包装对象

    包装对象 定义 对象是 JavaScript 语言最主要的数据类型,三种原始类型的值——数值、字符串、布尔值——在...

  • 08 js03 对象、包装类

    1、对象:【对象的属性和方法,方法存在的形式:属性为方法名/引用;属性值为函数体,对象的属性值可以是任何类型,原型...

  • (十二)包装对象

    1 定义 对象是 JavaScript 语言最主要的数据类型,三种原始类型的值——数值、字符串、布尔值——在一定条...

  • javascirpt包装对象(wrapper object)

    什么是javascript包装对象?在说包装对象之前,我们先简单说一下js的两种数据类型:基本数据类型(primi...

网友评论

    本文标题:JS(十二)对象,包装类(下)

    本文链接:https://www.haomeiwen.com/subject/bilafftx.html