这个对象,不是那个对象,第三哦!

对象之间会存在继承,所以,来说一下他们之间存在的三种三种继承方式:

  1、冒用继承    

         //创建了孙悟空构造函数
function Sun(change,weapon,gf){
this.change = change;
this.weapon = weapon;
this.gf = gf;
this.bianshen = function(){
alert("吃俺老孙一棒");
}
} //给原型上添加一个方法
/*Sun.prototype.bianshen = function(){
alert("吃俺老孙一棒");
}*/ //创建猪八戒构造函数
function Zhubajie(name){//name是猪八戒自己单独有的属性
this.name = name;
//创建一个属性,属性值是Sun构造函数
this.sun = Sun;
this.sun("仙桃","金箍棒","紫霞仙子");
delete this.sun;//删除掉这个属性
} var zbj = new Zhubajie("猪八戒"); zbj.bianshen();//方法可以使用
alert(zbj.weapon); //zbj 和Sun 不是同一类型的
alert(zbj instanceof Sun); //false

    这就是第一种继承方式。

    【注意】冒用继承缺点:不能使用原型上的方法和属性     优点:可以传递参数;

  2、原型继承

        function Dan(car,money,home){
this.car = car;
this.money = money;
this.home = home;
} //发方法声明在原型对象上
Dan.prototype.shoping = function (){
alert("买买买");
}
Dan.prototype.money = "5亿"; //这个实例化对象是Dan的儿子,可以使用Dan的属性和方法
var son = new Dan("劳斯莱斯幻影","10亿","四合院"); //创建一个乞丐构造函数
function S(name){
this.name = name;
} //让乞丐继承富豪的属性和方法
//把乞丐的构造函数原型修改成干爹的原型,这样,乞丐实例化对象就可以使用干爹的属性和方法。(两种方法)
// S.prototype = Dan.prototype;
S.prototype = new Dan(); //把S的原型对象constructor指针指回自己,否则会出问题
S.prototype.constructor = S;
var s = new S("苏乞儿");
s.shoping();
alert(s.money); //判断s的爸爸是不是 Dan
alert(s instanceof Dan);//true s 和 Dan不是一个东西

    这种继承方式就是将新建的父类对象赋给子类构造函数的原型。

     【注意】原型链继承缺点:不能传递参数      优点:可以使用原型 上的方法 ;    

  3、混合继承 

       function Person(name,id,sex){
this.name = name;
this.id = id;
this.sex = sex;
this.think = function(ss){
alert(ss);
}
} Person.prototype.eat = function(){
alert("呵呵");
} function XM(name,id,sex,clas){
this.clas = clas;
//call方法是用来继承用的。你想继承那个对性的属性,就要把属性传递进来;
// Person.call(this,name,id,sex); //apply和call功能相同;
//区别 call方法 参数要一个一个传, apply方法可以传参数数组
//优先选择apply方法使用
Person.apply(this,arguments);
} //原型链继承 + call/apply 叫混合继承
XM.prototype = new Person();
XM.prototype.constructor = XM; var xiaoming = new XM("小明","12312112112332","男","一年级二班");
alert(xiaoming.name);//打印小明名字属性
xiaoming.think("坎坎坷坷"); //现在有一个需要,让小明可以使用Person对象原型上的方法
xiaoming.eat();

    第三种方式就是 冒用继承 + 原型继承  ,既能继承父类的原型,完成复用,又能向父类传递参数。

    

    

    javascript所有的内容就到这里了,希望可以帮到大家!!!!!!

javascript对象(3)的更多相关文章

  1. json与JavaScript对象互换

    1,json字符串转化为JavaScript对象: 方法:JSON.parse(string) eg:var account = '{"name":"jaytan&quo ...

  2. javaScript对象-基本包装类型的详解

    本人按书上的内容大致地把javaScript对象划分成“引用类型”.“基本包装类型”和“内置对象”三块内容. 我们这篇先了解下基本包装类型的详细用法吧! 一.我们先解下相关概念: 1.引用类型的值(对 ...

  3. 如何理解javaScript对象?

    在我们生活中,常常会提到对象一词,如:你找到对象了吗?你的对象是谁呀?等等. 在我们家庭中,有男友的女青年都会说我有对象了,那么她的对象是XX(她的男友). 夫妻间呢?都会说我的爱人是谁谁谁,现在我们 ...

  4. 简述JavaScript对象、数组对象与类数组对象

    问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...

  5. 深入理解javascript对象系列第二篇——属性操作

    × 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...

  6. Javascript对象的方法赋值

    Javascript对象编程学习中,一直不能很好的掌握对象的属性(property)和方法(method).今天在写代码过程中,又犯了一个低级错误. <!DOCTYPE html> < ...

  7. web前端学习(二) javascript对象和原型继承

    目录 1. JavaScrpt对象 2. 原型对象和继承 3. 对象的克隆 (1)javascript对象 在JS中,对象是属性的容器.对于单个对象来说,都由属性名和属性值构成:其中属性名需要是标识符 ...

  8. 如何判断Javascript对象是否存在

    Javascript语言的设计不够严谨,很多地方一不小心就会出错. 举例来说,请考虑以下情况. 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言描述的算法如下: ...

  9. JavaScript 对象、DOM对象、jquery对象的区别、转换详解

    一.JavaScript 对象 JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象只是带有属性和方法的特殊数据类型. 访问对象的属性: [javascrip ...

  10. 关于javascript对象的简单记忆法

    关于javascript对象方法的简单记忆法(个人整理) string对象: 大号小号闪烁加链接./big/small/blink/link/ 粗体斜体打字删除线./bold/italics/fixe ...

随机推荐

  1. c语言数据结构学习心得——图

    图G由顶点集V和边集E组成,记为G=(V,E) 图不可为空,一定有顶点集不为空 有向图:有向边(弧)的有限集合 无向图:无向边的有限集合 连通:顶点V到顶点V'有路径 连通分量:无向图中的极大连通子图 ...

  2. c语言数据结构学习心得——排序

    排序:将无序的序列重新排列为有序的序列. 插入类排序 插入类排序:在一个有序的序列中,插入一个新的关键字,知道所有的关键字都插入形成一个有序的序列. 直接插入排序:首先以一个元素为有序的序列,然后将后 ...

  3. 网页footer背景(stick footer布局)

    今天遇到了一个有意思的问题,想在网站的foot里面加入一张背景图片,并且在footer的底部写下一些内容于是乎在footer添加了background,并设置了footer的大小 先说一下开始的做法: ...

  4. jenkins-APP打包页面展示二维码【转】

    背景: 客户要求在APP打包页面展示二维码.虽然感觉这个功能很鸡肋,但是还是加上吧. 效果展示: 配置: 在上图中,106对应的内容是BuildName,我们可以通过build-name-setter ...

  5. 洛谷 P4317 花神的数论题(组合数)

    题面 luogu 题解 组合数 枚举有多少个\(1\),求出有多少种数 扫描\(n\)的每一位\(1\), 强制选\(0\)然后组合数算一下有多少种方案 Code #include<bits/s ...

  6. opencv基本操作

    src.convertTo(dst, type, scale, shift) 缩放并转换到另外一种数据类型: dst:目的矩阵 type:需要的输出矩阵类型,或者更明确的,是输出矩阵的深度,如果是负值 ...

  7. [转] 运维小技巧:使用ss命令代替 netstat,和netstat说再见

    [From] https://blog.csdn.net/fenglailea/article/details/51810977 ss是Socket Statistics的缩写. 顾名思义,ss命令可 ...

  8. Putty使用帐号和密码的自动登录

    Putty使用ssh key做验证登陆是最方便的,不用密码.如果不想做key exchange,只是单纯想保存帐号密码做自动登陆,可以借助bat文件的方式如下,其中MyServer是已经保存了的ses ...

  9. nodejs的一些学习

    要使用npm的时候,其实是可以直接下载node.js的.参考文档http://www.runoob.com/nodejs/nodejs-npm.html 安装成功之后.判断是否安装成功.是不能直接用n ...

  10. linux 入门测验

    cd . 当前目录.. 返回上一级目录 ../../../返回多级目录 grep "目标信息" 目标地址 -v :显示没有被匹配的信息 mkdir -p:创建多级目录 mkdir ...