美文网首页
Javascript构造函数和Object.create创造的"

Javascript构造函数和Object.create创造的"

作者: kallsaver | 来源:发表于2017-01-06 00:11 被阅读0次

//只有对象可以无限加层 其他的数组,函数等等都不能  数组只有固定的三层 函数

function add(){

}

//var arr=[];

//var a={} //新var的对象 只有两层  上层Object  底层Object

console.log("------------------")

//console.log(arr) //数组只有三层  顶层Array  底层Array  底层Object

//函数有四层  顶层Function 底层Function 上层Object 底层Object

console.log(add.prototype) //直接跳上层Object  只有函数有prototype

console.log(add.__proto__) //function(){}空函数

//在写代码时  写Function首先得到的是上层Function 如果你希望得到底层Function 就要Function.prototype

console.log(Function.prototype)  //call方法就是封在这层  底层Function 所有的函数都有call方法

//可以封一个类似call的函数  Function.prototype.callPro=function(){}  这样所有的函数都有callPro方法了

console.log("--------------")

function Student(){

this.type="a Student"

}

function HxsdStudent(){

this.type="a HxsdStudent"

}

//这样 如果通过HxsdStudent创造出来的实例就有 底层HxsdStudent  底层Student 一个上层Object 一个底层Object

//但是没有上层Student 上层Student是Object.create()实现的

HxsdStudent.prototype=new Student()

var a=new HxsdStudent()

//construtor是写在上层Object上的

console.log(a)

console.log(a.__proto__)//Student层 //a处于底层HxsdStudent  它的下一层是底层Student

console.log(a.__proto__.__proto__) //Student层下一层就是上层Object层了  这层有construtor

console.log(a.__proto__.__proto__.__proto__) //底层Object

var b=Object.create(a) //这句话对a是有影响的  在浏览器中a的最顶层会被改名成次顶层

alert(a instanceof HxsdStudent) //true  还是true但是在浏览器中已经看不到HxsdStudent层了 被改名为Student

console.log(b) //有顶层HxsdStudent(被改名为Student) 底层HxsdStudent(被改名为Student) 底层Student 上层Object 底层Object

Student.prototype.speak1=function(){ //再次说明HxsdStudent只是被改名了而已

alert("我在Object层")

}

//这个HxsdStudent指的是构造器  不是Object.create创造出来的HxsdStudent层

HxsdStudent.prototype.speak2=function(){ //Object.create创造出来的层不是构造器,所以不能被检索

alert("我在Student层")

}

console.log(b)

//总结函数用prototype 对象用__proto__

相关文章

  • Javascript构造函数和Object.create创造的"

    //只有对象可以无限加层 其他的数组,函数等等都不能 数组只有固定的三层 函数function add(){}/...

  • 原型链与继承

    创建对象的方法 字面量创建 构造函数创建 Object.create() 原型 JavaScript 的所有对象中...

  • 面向对象02-对象的创建

    对象的创建 字面量 内置构造函数(Object) 工厂函数 自定义构造函数 Object.create() 01 ...

  • 原型链

    一、创建对象的几种方法 对象字面量 Object构造函数 构造函数 Object.create 二、原型对象、构造...

  • 构造函数和原型对象

    javascript使用构造函数和原型对象来进行面向对象编程 构造函数 在 JavaScript 中,构造器其实就...

  • JS组合继承(寄生继承)

    js中new和Object.create的区别(简单描述): new 产生的实例,优先获取构造函数上的属性;构造函...

  • 对象的创建与继承

    创建对象的几种方法 1、字面量 2、通过构造函数 3、Object.create 继承的几种方式 1、构造函数 缺...

  • prototype

    原型链 创建对象有几种方法 对象字面量 通过构造函数 Object.create 原型、构造函数、实例、原型链 函...

  • 生成对象的方式

    方式一:构造函数new方式二:当没有构造函数时,有实例对象时作为模板Object.create() new命令的原...

  • JS:day13

    继承 1.原型对象链和 Object.prototype 2.对象继承(Object.create) 3.构造函数...

网友评论

      本文标题:Javascript构造函数和Object.create创造的"

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