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面向对象学习的更多相关文章

  1. JavaScript面向对象学习笔记

    JavaScript 常被描述为一种基于原型的语言 (prototype-based language)--每个对象拥有一个原型对象,对象以其原型为模板.从原型继承方法和属性.原型对象也可能拥有原型, ...

  2. javascript面向对象学习(一)

    面向对向的初体验 创建一个标签 // 传统 var p = document.createElement('p'); var txt = document.createTextNode('我是传统js ...

  3. javascript 面向对象学习(一)——构造函数

    最近在学习设计模式,找了很多资料也没有看懂,看到怀疑智商,怀疑人生,思来想去还是把锅甩到基础不够扎实上.虽然原型继承.闭包.构造函数也都有学习过,但理解得不够透彻,影响到后续提高.这次重新开始学习,一 ...

  4. javascript 面向对象学习(三)——this,bind、apply 和 call

    this 是 js 里绕不开的话题,也是非常容易混淆的概念,今天试着把它理一理. this 在非严格模式下,总是指向一个对象,在严格模式下可以是任意值,本文仅考虑非严格模式.记住它总是指向一个对象对于 ...

  5. javascript 面向对象学习(二)——原型与继承

    什么是原型? 首先我们创建一个简单的空对象,再把它打印出来 var example = {} console.log(example) 结果如下: { __proto__: { constructor ...

  6. javascript面向对象学习笔记——创建对象(转)

    工厂模式 该模值抽象了创建具体对象de过程.用函数来封装噫特定接口创建对象的细节. function createPerson(name,age,job){ var o=new Object(); o ...

  7. JavaScript之面向对象学习七(动态原型模式、寄生构造函数模式、稳妥构造函数模式创建自定义类型)

    一.动态原型模式 在面向对象学习六中的随笔中,了解到组合构造函数模式和原型模式创建的自定义类型可能最完善的!但是人无完人,代码亦是如此! 有其他oo语言经验的开发人员在看到独立的构造函数和原型时,很可 ...

  8. JavaScript学习笔记(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  9. JavaScript学习总结(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

随机推荐

  1. ARM三级流水线

    title: ARM三级流水线 tags: ARM date: 2018-10-14 16:57:10 --- 参考: ARM指令集E004armproc.chm ARM Architecture R ...

  2. python第三次周末大作业

    ''' s18第三周周末⼤作业 模拟博客园系统: 1. 启动程序, 显⽰菜单列表 菜单: 1. 登录 2. 注册 3. ⽂章 4. ⽇记 5. 退出 2. ⽤户输入选项, ⽂章和⽇记必须在登录后才可以 ...

  3. bootstrap实现checkbox全选、取消全选

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!-- 最新版本的 ...

  4. Web项目发布的更新

    在项目发版后经常需要修改bug,解决出现的各种问题,对项目升级,这时候就需要将之前部署,上线的项目更新版本. 本文就简单说一下一些出现的关键点(不到之处欢迎指教) 1.使用idea,eclipse等工 ...

  5. springMVC怎么接受前台传过来的多种类型参数?(集合、实体、单个参数)

    创建一个实体:里面包含需要接受的多种类型的参数.如实体.list集合.单个参数.(因为springMVC无法同时接受这几种参数,需要创建一个实体包含它们来接受) 如接收User(bean里面包含Lis ...

  6. 常用Java数据库连接池

    概述 在这里所谓的数据库连接是指通过网络协议与数据库服务之间建立的TCP连接.通常,与数据库服务进行通信的网络协议无需由应用程序本身实现,原因有三: 实现复杂度大,需要充分理解和掌握相应的通信协议. ...

  7. mkdocs 生成帮助文档

    简介 MkDocs 可以同时编译多个markdown文件,形成书籍一样的文件.有多种主题供你选择,很适合项目使用. MkDocs 是快速,简单和华丽的静态网站生成器,可以构建项目文档.文档源文件在 M ...

  8. vue中异步函数async和await的用法

    整理的不错,收藏一下 http://blog.sina.com.cn/s/blog_13d06fc1f0102wzfr.html

  9. mysql5.7安装(正确安装)实战

    一.二进制免编译包安装  参考:http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=10105&highlight=mys ...

  10. ubuntu 18.04/18.10解决create-react-app:command not found问题

    npm config set prefix /usr/local sudo npm install -g create-react-app create-react-app my-app