javascript面向对象学习
1、this指向问题,指向的是当前的方法属于谁,当前的方法属于谁就指向谁!!
例子:
oDiv.onclick = function () {
this指向的是oDiv,因为这个方法属于oDiv
}
var obj = new Object(); //构造对象
obj.show=function(){
this====>>这时候的函数属于obj,所以this指向的是obj这个对象
}
Tab.prototype.show=function(){
alert(this)这时候this指向的是后面new Tab函数的实例对象
}
被定时器调用的this都是指向window,事件的话指向事件====》》这时候使用_this来修改指向问题
2、函数的形式
函数:
方法:
事件处理函数:
构造函数==》函数用来构造对象叫什么构造函数!!!(首字母大写)
3、构造函数
用工厂方式构造对象
工厂方式的问题:
1、没有new
2、每个对象都有一套自己的函数---浪费资源
this:当前的方法属于谁就指谁
函数前面有new的时候,会创建一个新的object,这时候this指向的是这个object
全局函数,this指向的是window,new show()指向是object(使用new函数时系统会在函数内部创建一个对象)!!
4、原型prototype
类比:
prototype ====》》class 改变一类元素的样式
给一个对象加方法 ===》》行间样式 改变一个元素的样式
var arr1 = new Array(12, 5, 8, 4);
var arr2=new Array(44, 6,5,4);
Array.prototype.sum=function(){} 这样arr1跟arr2都有sum这个方法
arr1.prototype.sum=function(){} 这样只有arr1有sum这个方法,arr2没有
类 模子
对象(实例) 蛋糕
var arr=new Array();
Array类 不具备实际的功能,只能用来构造对象
arr对象 真正有功能的东西,被类给构造出来的东西
类就是构造函数 Array是类,arr是构造函数
prototype就是在原类的基础上进行方法扩展,用元素来给构造函数增加方法!
总结
对象的组成 方法(函数) 属性(变量)
用构造函数来增加属性,每个对象的属性各不相同!!!
对象组成和继承对象:
1、属性
2、方法
继承:
1、先执行父级的构造函数,然后再添加子类的属性!!
注意!!当直接使用 Worker.prototype=Person.prototype;的方法来继承父级的方法时,子级跟父级指向同一个空间,因此修改子级的同时会修改父级,需要做如下修改!!
for( var i in Person.prototype)
{
Worker.prototype[i]=Person.prototype[i];
}
常见面试题误区
引用
//指向同一个指针
var arr1=[、、];
var arr2=arr1;
arr2.push("");
alert(arr1)====>>1.2.3.4
//解析这时候arr2引用arr1,那么此时,arr2跟arr1是指向同一指针空间,所以其中一个改变,都会跟着发生改变 //指向不同指针
var arr1=[、、];
var arr2=[];
for(var i in arr1){
arr2[i]=arr1[i]; //循环赋值
} arr2.push(""); alert(arr1) ====>>、、
javascript面向对象学习的更多相关文章
- JavaScript面向对象学习笔记
JavaScript 常被描述为一种基于原型的语言 (prototype-based language)--每个对象拥有一个原型对象,对象以其原型为模板.从原型继承方法和属性.原型对象也可能拥有原型, ...
- javascript面向对象学习(一)
面向对向的初体验 创建一个标签 // 传统 var p = document.createElement('p'); var txt = document.createTextNode('我是传统js ...
- javascript 面向对象学习(一)——构造函数
最近在学习设计模式,找了很多资料也没有看懂,看到怀疑智商,怀疑人生,思来想去还是把锅甩到基础不够扎实上.虽然原型继承.闭包.构造函数也都有学习过,但理解得不够透彻,影响到后续提高.这次重新开始学习,一 ...
- javascript 面向对象学习(三)——this,bind、apply 和 call
this 是 js 里绕不开的话题,也是非常容易混淆的概念,今天试着把它理一理. this 在非严格模式下,总是指向一个对象,在严格模式下可以是任意值,本文仅考虑非严格模式.记住它总是指向一个对象对于 ...
- javascript 面向对象学习(二)——原型与继承
什么是原型? 首先我们创建一个简单的空对象,再把它打印出来 var example = {} console.log(example) 结果如下: { __proto__: { constructor ...
- javascript面向对象学习笔记——创建对象(转)
工厂模式 该模值抽象了创建具体对象de过程.用函数来封装噫特定接口创建对象的细节. function createPerson(name,age,job){ var o=new Object(); o ...
- JavaScript之面向对象学习七(动态原型模式、寄生构造函数模式、稳妥构造函数模式创建自定义类型)
一.动态原型模式 在面向对象学习六中的随笔中,了解到组合构造函数模式和原型模式创建的自定义类型可能最完善的!但是人无完人,代码亦是如此! 有其他oo语言经验的开发人员在看到独立的构造函数和原型时,很可 ...
- JavaScript学习笔记(三)——this、原型、javascript面向对象
一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...
- JavaScript学习总结(三)——this、原型、javascript面向对象
一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...
随机推荐
- 云计算虚拟机技术-KVM安装
云计算虚拟机技术-KVM安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 身为运维的小伙伴估计大家都清楚KVM,因为在CentOS里面KVM还算很折腾的一个软件,早期CentOS ...
- hive metastore && hiveserver2 . jvm 配置调整优化
hive-env.sh 添加如下,其中踩坑踩了不少. if [ "$SERVICE" = "metastore" ]; then if [ -z "$ ...
- 网络编程基础【day09】:socketserver进阶(十)
本节内容 1.概述 2.多用户并发 3.socketserver.BaseServer 一.概述 之前上一篇写的 day8-socketserver使用 讲解了socketsever如何使用,但是在最 ...
- MongoDB 入门篇
1.1 数据库管理系统 在了解MongoDB之前需要先了解先数据库管理系统 1.1.1 什么是数据? 数据(英语:data),是指未经过处理的原始记录. 一般而言,数据缺乏组织及分类,无法明确的表达事 ...
- 【1】【leetcode-130】 被围绕的区域
(DFS思路对,写复杂了) 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O ...
- ArcGis Python脚本——ArcGIS 中使用的 Python 是什么版本
Python 编程语言用于自 9.0 起的各版本 ArcGIS 中,并被整合到 ArcMap 和 ArcGIS for Server 的自动安装中. ArcGIS 将在完整安装过程中安装下列 Pyth ...
- API(Scanner、Random、ArrayList、String、Arrays、Math)
Scanner import java.util.Scanner; /* public int nextInt(): to get a integer from keyboard public Str ...
- Dijkstra和Floyd算法
#include #include #include #define Infinity 999 //最大值 #define Max_Vertex_Num 20 //顶点数最多为20 #define L ...
- IScroll5要防止重复加载
增加一个判断条件,ajax未返回前,设置为true,返回前设置为false,只有为false下才能够出发加载数据事件效果好很多.
- TCP简单回射程序
一.程序功能 (1)客户从标准输入读入一行文本行,并写给服务器: (2)服务器从网络输入读入这行文本,并回射给客户: (3)客户从网络输入读入这行回射文本,并显示在标准输出上 二.服务器程序 #inc ...