javascript对象(3)
这个对象,不是那个对象,第三哦!
对象之间会存在继承,所以,来说一下他们之间存在的三种三种继承方式:
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)的更多相关文章
- json与JavaScript对象互换
1,json字符串转化为JavaScript对象: 方法:JSON.parse(string) eg:var account = '{"name":"jaytan&quo ...
- javaScript对象-基本包装类型的详解
本人按书上的内容大致地把javaScript对象划分成“引用类型”.“基本包装类型”和“内置对象”三块内容. 我们这篇先了解下基本包装类型的详细用法吧! 一.我们先解下相关概念: 1.引用类型的值(对 ...
- 如何理解javaScript对象?
在我们生活中,常常会提到对象一词,如:你找到对象了吗?你的对象是谁呀?等等. 在我们家庭中,有男友的女青年都会说我有对象了,那么她的对象是XX(她的男友). 夫妻间呢?都会说我的爱人是谁谁谁,现在我们 ...
- 简述JavaScript对象、数组对象与类数组对象
问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...
- 深入理解javascript对象系列第二篇——属性操作
× 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...
- Javascript对象的方法赋值
Javascript对象编程学习中,一直不能很好的掌握对象的属性(property)和方法(method).今天在写代码过程中,又犯了一个低级错误. <!DOCTYPE html> < ...
- web前端学习(二) javascript对象和原型继承
目录 1. JavaScrpt对象 2. 原型对象和继承 3. 对象的克隆 (1)javascript对象 在JS中,对象是属性的容器.对于单个对象来说,都由属性名和属性值构成:其中属性名需要是标识符 ...
- 如何判断Javascript对象是否存在
Javascript语言的设计不够严谨,很多地方一不小心就会出错. 举例来说,请考虑以下情况. 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言描述的算法如下: ...
- JavaScript 对象、DOM对象、jquery对象的区别、转换详解
一.JavaScript 对象 JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象只是带有属性和方法的特殊数据类型. 访问对象的属性: [javascrip ...
- 关于javascript对象的简单记忆法
关于javascript对象方法的简单记忆法(个人整理) string对象: 大号小号闪烁加链接./big/small/blink/link/ 粗体斜体打字删除线./bold/italics/fixe ...
随机推荐
- SDK 开发 .a .framework .bundle (xcode引用) 依赖sdk工程
一. 静态库.a 1.创建静态库工程 Cocoa Touch Static Libray ,然后可以创建一个测试视图 TestView 2.暴露头文件 -> Build Phases--> ...
- Windows7下采用cygwin编译安装swoole扩展
常用命令 查看cygwin当前的版本: cygcheck -c cygwin 检查所有安装软件的版本号:cygcheck -c 查看某一个软件安装的版本:cygcheck -c 软件名称 查看本地已经 ...
- 蓝桥-青蛙跳杯子(bfs)
问题描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙 ...
- Django Cannot assign "A1": "B1" must be a "C1" instance. 错误信息
常见报错 Cannot assign “A1”: “B1” must be a “C1” instance. 告诉我们 必须使用 C1 模型类的 实例,而不是具体的参数值. 这个错误信息,是我写入数据 ...
- Web Worker 案例
什么是 Web Worker? 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性 ...
- hdu1022 模拟栈
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- js css div 点亮半颗星星(二)
上回说到js css点亮星星 换种方式来点亮 <!DOCTYPE html> <html lang="en"> <head> <meta ...
- CSAPP阅读笔记-32位64位的区别--来自第三章引言的笔记--P110
仅从寻址上看,32位和64位机器能寻址的内存空间大小不同. 需要知道的是,计算机系统对存储器作了抽象,程序“认为”内存是一个很大的字节数组,然而实际上它是由多个硬件存储器和操作系统组合起来实现的. 程 ...
- Root用户让其他用户运行某程序
这里以启动tomcat为例 1.安装tomcat不介绍了,自己百度 2.测试能否使用,略 3.创建tomcat用户 useradd tomcat -s /sbin/nologin 创建tomcat,禁 ...
- 为数据赋能:腾讯TDSQL分布式金融级数据库前沿技术
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 简介:李海翔,网名"那海蓝蓝",腾讯金融云数据库技术专家.中国人民大学信息学院工程硕士企业导师.著有<数据库事务处 ...