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. Hbase运维手册(1)

    1. region情况 需要检查 1. region的数量(总数和每台regionserver上的region数) 2. region的大小 如果发现异常可以通过手动merge region和手动分配 ...

  2. Java Web之下载文件

    下载的文件,不能随便的被访问,放在外面的文件夹肯定不行,url一敲就能访问了,所以我们要放在WEB-INF文件夹里面,WEB-INF文件夹只有Servlet才能访问,我们新建一个文件夹,叫downlo ...

  3. python django基础二URL路由系统

    URL配置 基本格式 from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数 ...

  4. 阿里Fastjson的使用

    Fastjson是一个Java语言编写的高性能功能完善的JSON库.由阿里巴巴公司团队开发的. 主要特性主要体现在以下几个方面: 1.高性能 fastjson采用独创的算法,将parse的速度提升到极 ...

  5. Oracle的 listagg() WITHIN GROUP ()函数使用

    1.使用条件查询  查询部门为20的员工列表 -- 查询部门为20的员工列表    SELECT t.DEPTNO,t.ENAME FROM SCOTT.EMP t where t.DEPTNO = ...

  6. 验证调用HttpServletResponse.getWriter().close()方法是否真的会关闭http连接

    起因 线上项目突然遭到大量的非法参数攻击,由于历史问题,之前的代码从未对请求参数进行校验. 导致大量请求落到了数据访问层,给应用服务器和数据库都带来了很大压力. 针对这个问题,只能对请求真正到Cont ...

  7. SQL Server进阶 SQL优化

    找到消耗内存最多的SQL SELECT mg.granted_memory_kb, mg.session_id, t.text, qp.query_plan FROM sys.dm_exec_quer ...

  8. set用法

    set的用法一直拖着,今天才算真正会了,小小总结一下(我好菜啊啊啊) #include<bits/stdc++.h> using namespace std; ]; int main(){ ...

  9. mysql单表删除记录DELETE

    DELETE FROM tbl_name  [WHERE where_condition] mysql> SELECT * FROM users;+----+----------+------- ...

  10. python中yield的用法

    ---"在python中,当你定义一个函数,使用了yield关键字时,这个函数就是一个生成器" (也就是说,只要有yield这个词出现,你在用def定义函数的时候,系统默认这就不是 ...