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是一个动态的对象,根据调用的对象不同而发生变化, ...
随机推荐
- 开源框架.netCore DncZeus学习(一)npm安装
今天看到一个不错的开源项目DncZeus, https://github.com/lampo1024/DncZeus 整个界面挺漂亮,而且权限做到了按钮级别,功能也较容易扩展,刚好学习VUE纯看文章很 ...
- IPv6地址测试宏
- Inline Route Constraints in ASP.NET Core MVC
原文 ASP.NET MVC5和Web API2的一个新特性是attribute routing, 通过它我们可以使用[Route]来定义路由模板: public class MessagesCont ...
- 【python小练】0002
第 0002 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中. . . .(一脸懵逼) Python访问数据库:(廖雪峰python教程) 1. SQLi ...
- 执行sql,使用带参的写法
db.ExecuteNonQuery("UPDATE QU_QUALITYREPORT SET RETOSTATUS=1 WHERE BATCHID=@0 AND PROVINCEAREA ...
- Webstorm添加新建.vue文件功能并支持高亮vue语法和es6语法
转载:https://blog.csdn.net/qq_33008701/article/details/56486893 Webstorm 添加新建.vue文件功能并支持高亮vue语法和es6语法 ...
- cygwin 安装包管理器 apt-cyg
https://github.com/transcode-open/apt-cyg apt-cyg is a simple script. To install: lynx -source https ...
- js2wordcloud 词云包的使用
js文件下载: https://github.com/liangbizhi/js2wordcloud/tree/master/ dist文件夹内 引用: <script src="** ...
- P2709 小B的询问(莫队入门)
题目链接:https://www.luogu.org/problemnew/show/P2709 题目大意:中文题目 具体思路:莫队入门题,按照离线的方式打的,对每一个区间进行分块和编号,如果在同一个 ...
- MySql cmd下的学习笔记 —— 有关修饰器的知识(trigger)
关于触发器的理解: 进行数据库应用软件的开发时,有时我们碰到表的某些数据的改变时,希望同时 引起其他相关数据改变的需求,利用触发器就能满足这样的需求. 触发器能在表中的某些特定数据变化时自动完成某些查 ...