目录

创建对象

字面量 创建对象

new Object() 创建对象

获取、设置对象属性

obj.key 获取/设置obj的key属性的值value

obj['key'] 获取/设置obj的key属性的值value

key in obj 判断obj中是否有属性key

delete obj.key 删除obj的key属性

批量创建对象方法

工厂模式

构造函数

构造+原型 组合模式

全局函数调用

this指向

原型

原型链

new操作符的实现

面向过程

面向对象编程(oop)

面向对象

原型链继承

构造函数继承

组合继承

多态

闭包

创建对象

字面量 创建对象

var obj ={

key:value

}

new Object() 创建对象

var obj1 = new Object()

获取、设置对象属性

obj.key 获取/设置obj的key属性的值value

obj1.key / obj1.key=value

obj[‘key’] 获取/设置obj的key属性的值value

obj['key'] / obj['key']=value

key in obj 判断obj中是否有属性key

key in obj

delete obj.key 删除obj的key属性

delete obj.key

批量创建对象方法

工厂模式

//优点 生成独立的新对象

//缺点 代码重复 没有从属性

function fun(value1, value2){

var obj ={

'key1':value1,

'key2':value2

}

return obj

}

var a = fun(实参1, 实参2)

//原型模式 函数的原型对象 prototype属性

//优点 生成一个对象 没有重复 有从属

//缺点 可变的不可变

fun.prototype={

key1:value1,

key2:value2

}

构造函数

//首字母大写

//优点 创建不同对象 有从属关系

//缺点 代码重复

function App(value1, value2){

this.key1=valve1,

this.key2=value2

}

var app = new App(实参1, 实参2)

构造+原型 组合模式

//不重复 可改变 有从属

function App(value1, value2){ //可变

this.key1=valve1,

this.key2=value2

}

App.prototype={ //不可变

key3:function(){},

key4:value4

}

var app = new App(实参1, 实参2)

全局函数调用

function a(){ }

a() 或 window.a()

this指向

纯粹函数中的this 指向window

对象中的函数的this 指向上层对象

事件中的this 指向事件触发元素

构造函数中的this 指向实例化的对象

//改变this指向的方法

call(obj, 参数1, 参数2) //","隔开

apply(obj, [参数1, 参数2]) //"[]"包裹

bind(obj, 参数1, 参数2)() 或 bind(obj)(参数1, 参数2) //","隔开 参数写在前/后"()"中 需要调用

原型

每一个普通函数都有一个prototype属性,它指向函数的原型对象

原型对象有一个constructor属性,指向它的构造函数

原型链

每一个obj中都有`__proto__`属性,指向构造函数的原型对象,层层递进,最终指向null,这样形成的链式结构叫原型链

new操作符的实现

function fun(){

this.key = value;

}

fun.prototype.btn = function(){}

var obj = {} //定义一个新对象

`obj.__proto__` = fun.prototype //函数的原型对象赋到obj的原型链上

fun.call(obj) //改变this指向到obj

var ol = obj //返回新对象

面向过程

需要关注每一步

面向对象编程(oop)

以对象的方式实现某个功能

优点:不需要关注如何实现,只关注如何使用

//案例1

function Box(){

this.div=document.createElement('div')

}

Box.prototype={

innerText:function(texts){

this.div.innerText=texts

return this

},

innerCss:function(obj){

for (var key in obj){

this.div.style[key]=obj[key]

}

return this

},

innerHtml:function(id){

var d = document.getElementById(id)

d.appendChild(this.div)

return this

}

}

var ass = new Box()

ass.innerText('aaa').innerCss({'background':'red'}).innerHtml('box')

面向对象

//特性:封装、继承、多态

原型链继承

//子类.prototype = new 父类

//优点:继承父类所有的方法和属性

//缺点:无法给父类构造函数传参

//父类

function Fu(value){

this.keys = value

}

Fu.prototype.fun=function(a){console.log(a)}

//子类

function Zi(){}

Zi.prototype=new Fu('value')

//实例化Zi()

var zi = new Zi()

console.log(zi)

构造函数继承

//子类构造函数中 {父类.call(this)}

//优点:可以给父类构造函数传参

//缺点:不能继承父类的原型

//父类

function Fu(value1,value2){

this.keys1 = value1,

this.keys2 = value2

}

Fu.prototype.fun=function(a){console.log(a)}

//子类

function Zi(){Fu.call(this)}

//实例化Zi()

var zi = new Zi()

console.log(zi)

组合继承

//优点:即可给父类传参,也可继承父类的原型

//父类

function Fu(value1,value2){

this.keys1 = value1,

this.keys2 = value2

}

Fu.prototype.fun=function(a){console.log(a)}

//子类

function Zi(n,m){Fu.call(this,n,m)}

Zi.prototype=new Fu('value1','value2')

//实例化Zi()

var zi = new Zi('value3','value4')

console.log(zi)

多态

//父类

function Fu(value1,value2){

this.keys1 = value1,

this.keys2 = value2

}

Fu.prototype.fun=function(a){console.log(a)}

//子类

function Zi(n,m,c){

Fu.call(this,n,m)

this.c=c

}

Zi.prototype=new Fu('value1','value2')

Zi.prototype.dd='qwe'

//实例化Zi()

var zi = new Zi('value3','value4','sdf')

console.log(zi)

闭包

//即 闭包函数 闭包变量

//可以访问其他函数内部变量的函数

//即 定义在函数内部的函数

//---------------------------------------------------------

//方法一

function a(){

var x=1

//x 闭包变量 不会销毁,可能造成内存泄漏

//b() 闭包函数

function b(){

console.log(x)

}

b()

}

a()

//-----------------------------------------------------

//方法二

function a(){

var x=1

//x 闭包变量 不会销毁,可能造成内存泄漏

(function(){

console.log(x)

})()

}

a()

//-----------------------------------------------------

//方法三

function a(){

var x=1

//x 闭包变量 不会销毁,可能造成内存泄漏

return function(){

console.log(x)

}

}

a()()

java父原型,对象及原型丶Java教程网-IT开发者们的技术天堂相关推荐

  1. 不同组合方式有四种纸币java_拼凑钱币丶Java教程网-IT开发者们的技术天堂

    [问题]给你六种面额 1.5.10.20.50.100 元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数. 输入描述: 输入包括一个整数n(1 ...

  2. java 箭头函数_箭头函数丶Java教程网-IT开发者们的技术天堂

    基本用法 在ES6中允许使用 => 来定义函数,如下: var f = a => a; console.log(f(1)); //1 就等同于 var f = function(a){ r ...

  3. ejs java_ejs教程丶Java教程网-IT开发者们的技术天堂

    ejs教程 一.什么是EJS EJS是一个JavaScript模板库,用来从JSON数据中生成HTML字符串. 二.为什么要使用EJS 与最初的JavaScript相比较,一些不太了解你的代码的人可以 ...

  4. java 淡化图片阴影_图像去阴影丶Java教程网-IT开发者们的技术天堂

    武汉大学提出ARGAN:注意力循环生成对抗模型用于检测.去除图像阴影 | ICCV 2019 https://blog.csdn.net/weixin_42137700/article/details ...

  5. java 淘口令_淘口令解析丶Java教程网-IT开发者们的技术天堂

    淘口令解析 通过程序解析淘口令,无需联盟开发者权限,只需几行代码就可实现自动识别淘口令: def query_password(sign_server, share_password): data = ...

  6. 字典 java_字典丶Java教程网-IT开发者们的技术天堂

    在这之前,先说一个概念:字典. 字典(dictionary)是由一些形如(key,value)的数对所组成的集合,其中key是关键字,value是与关键字key对应的值(另一种说法是,value是值, ...

  7. java接口防抖_防抖函数丶Java教程网-IT开发者们的技术天堂

    1.使用场景:是在写keyup事件的时候,每次触发,都会请求后台接口,为了避免,每次请求,键盘弹起之后,隔上一段时间再去请求,所以用防抖函数 2.概念: (1)什么是防抖:多次事件触发后.事件处理函数 ...

  8. java闪屏_闪屏页设置丶Java教程网-IT开发者们的技术天堂

    相信每个app都需要一个闪屏页 就是一个开始页面  对于新手来说 可能就直接一个activity 弄个背景图片 ,细心地同学也许会发现 每次启动 应用程序的时候 一开始显示的不是那个设置的背景图片  ...

  9. 视频压缩技术 java_视频压缩丶Java教程网-IT开发者们的技术天堂

    ffmpeg -i input.mp4 -vf scale=1280:720 out.mp4 1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an outpu ...

最新文章

  1. android shortcut livefoulder
  2. 大数据技术基础_【基础】大数据技术栈介绍
  3. Java中怎样新建一个list并给其赋值
  4. 刘敏:优麒麟开源操作系统运营实践 | DEV. Together 2021 中国开发者生态峰会
  5. 聚焦产业·城市、擎领数字未来:IMPACT2019紫光云峰会在津成功举办
  6. Google推出了一个名为“Google Public DNS”的域名解析系统
  7. 如何在 Linux 终端中一次运行多个 Linux 命令(初学者教程)
  8. *第十五周*数据结构实践项目二【用哈希法组织关键字】
  9. Entity Framework 4.1 Code First学习之路(二)
  10. 金山毒霸 2011 SP2 论坛内测开始
  11. 软件工程 选课系统的uml类图_UML学生选课系统.doc
  12. 更换硬盘并迁移系统的方法
  13. win10 专业版 explorer.exe下载 (完全Free)
  14. C++ imagemagick png图片压缩,背景变黑问题
  15. IT开发工程师经典面试
  16. 手机端html跑马灯效果,jQuery实现适用于移动端的跑马灯抽奖特效示例
  17. resiprocate中提示make对all无需做任何事
  18. 提取WORD中的所有InlineShape图片并保存成文件
  19. php实现图片液化,图像变形算法:实现Photoshop液化工具箱中向前变形工具
  20. 0x00000005 3.数据结构和算法 基础数据结构 字符串(上)

热门文章

  1. 70行代码撸一个桌面自动翻译神器(采用Markdown格式编写)
  2. matlab maximum,maximum size of a string in matlab
  3. 【设计模式】之抽象工厂模式详解与应用(三)
  4. 问题创建双网卡后,不能重启网卡的解决办法
  5. ajax kindeditor textarea,kindeditor编辑器获取不到textarea值的解决方法
  6. matlab fread精度,matlab中fread函数的应用
  7. ICSharpCode.TextEditor如何自定义代码折叠和高亮
  8. 跪求下方支付宝生活号收款码代码或者方法
  9. java gc与finalize_finalize 与 Java GC
  10. 日常记录生活中的那些小小事01