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 ...
随机推荐
- 选课 树形背包dp
题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门课有个学分,每门课有一 ...
- AForge.net 录像拍照功能实现 转
AForge.net 使用之录像拍照功能实现 最近使用aforge.NET拍照录像功能实现 记录一下以便以后好学习,哈哈,直接上代码 连接摄像头设备,这里需要引入 AForge.Video; AFor ...
- 5A - Matrix
#include <iostream> using namespace std; int n, m, q; struct node { int v; // 节点权值 int r; // 右 ...
- PHP生成pdf文档
首先需要去github下载tcpdf类库 require_once('./tcpdf/tcpdf.php'); date_default_timezone_get('Asia/Shan ...
- 文件管理NSFileManager
//NSFileManager - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"%@",NSHomeDirectory()); ...
- python get() 和getattr()
get() Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法: dict.get(key, default=None) 实例1: d={'A':1,'b':2} ...
- POJ1064 Cable master 【二分找最大值】
题目:题目太长了! https://vjudge.net/problem/POJ-1064 题意分析:给了你N根长度为小数形式的棍子,再给出了你需要分的棍子的数量K,但要求你这K根棍子的长度必须是一样 ...
- P2762 太空飞行计划问题
传送门 经典的最大权闭合子图问题 实验有正的价值,仪器的价值为负 为了实验我们必须选择相应的仪器 所以从 S 连向实验,边权为实验的价值 实验与相应仪器之间连边,边权为 INF 仪器连向 T 边权为仪 ...
- Flutter FormatException: Bad UTF-8 encoding 0xc3 (at offset 172)
是文件编码问题. 1,打开 Android Studio 进入设置界面 Ctrl + Alt + S 或 File --> Settings 打开如下界面: 2,将 Project Encode ...
- PIE SDK打开矢量数据
1. 功能简介 GIS将地理空间数据表示为矢量数据和栅格数据.矢量数据模型使用点.线和多边形来表示具有清晰空间位置和边界的空间要素,如控制点.河流和宗地等,每个要素被赋予一个ID,以便与其属性相关联. ...