java父原型,对象及原型丶Java教程网-IT开发者们的技术天堂
目录
创建对象
字面量 创建对象
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开发者们的技术天堂相关推荐
- 不同组合方式有四种纸币java_拼凑钱币丶Java教程网-IT开发者们的技术天堂
[问题]给你六种面额 1.5.10.20.50.100 元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数. 输入描述: 输入包括一个整数n(1 ...
- java 箭头函数_箭头函数丶Java教程网-IT开发者们的技术天堂
基本用法 在ES6中允许使用 => 来定义函数,如下: var f = a => a; console.log(f(1)); //1 就等同于 var f = function(a){ r ...
- ejs java_ejs教程丶Java教程网-IT开发者们的技术天堂
ejs教程 一.什么是EJS EJS是一个JavaScript模板库,用来从JSON数据中生成HTML字符串. 二.为什么要使用EJS 与最初的JavaScript相比较,一些不太了解你的代码的人可以 ...
- java 淡化图片阴影_图像去阴影丶Java教程网-IT开发者们的技术天堂
武汉大学提出ARGAN:注意力循环生成对抗模型用于检测.去除图像阴影 | ICCV 2019 https://blog.csdn.net/weixin_42137700/article/details ...
- java 淘口令_淘口令解析丶Java教程网-IT开发者们的技术天堂
淘口令解析 通过程序解析淘口令,无需联盟开发者权限,只需几行代码就可实现自动识别淘口令: def query_password(sign_server, share_password): data = ...
- 字典 java_字典丶Java教程网-IT开发者们的技术天堂
在这之前,先说一个概念:字典. 字典(dictionary)是由一些形如(key,value)的数对所组成的集合,其中key是关键字,value是与关键字key对应的值(另一种说法是,value是值, ...
- java接口防抖_防抖函数丶Java教程网-IT开发者们的技术天堂
1.使用场景:是在写keyup事件的时候,每次触发,都会请求后台接口,为了避免,每次请求,键盘弹起之后,隔上一段时间再去请求,所以用防抖函数 2.概念: (1)什么是防抖:多次事件触发后.事件处理函数 ...
- java闪屏_闪屏页设置丶Java教程网-IT开发者们的技术天堂
相信每个app都需要一个闪屏页 就是一个开始页面 对于新手来说 可能就直接一个activity 弄个背景图片 ,细心地同学也许会发现 每次启动 应用程序的时候 一开始显示的不是那个设置的背景图片 ...
- 视频压缩技术 java_视频压缩丶Java教程网-IT开发者们的技术天堂
ffmpeg -i input.mp4 -vf scale=1280:720 out.mp4 1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an outpu ...
最新文章
- android shortcut livefoulder
- 大数据技术基础_【基础】大数据技术栈介绍
- Java中怎样新建一个list并给其赋值
- 刘敏:优麒麟开源操作系统运营实践 | DEV. Together 2021 中国开发者生态峰会
- 聚焦产业·城市、擎领数字未来:IMPACT2019紫光云峰会在津成功举办
- Google推出了一个名为“Google Public DNS”的域名解析系统
- 如何在 Linux 终端中一次运行多个 Linux 命令(初学者教程)
- *第十五周*数据结构实践项目二【用哈希法组织关键字】
- Entity Framework 4.1 Code First学习之路(二)
- 金山毒霸 2011 SP2 论坛内测开始
- 软件工程 选课系统的uml类图_UML学生选课系统.doc
- 更换硬盘并迁移系统的方法
- win10 专业版 explorer.exe下载 (完全Free)
- C++ imagemagick png图片压缩,背景变黑问题
- IT开发工程师经典面试
- 手机端html跑马灯效果,jQuery实现适用于移动端的跑马灯抽奖特效示例
- resiprocate中提示make对all无需做任何事
- 提取WORD中的所有InlineShape图片并保存成文件
- php实现图片液化,图像变形算法:实现Photoshop液化工具箱中向前变形工具
- 0x00000005 3.数据结构和算法 基础数据结构 字符串(上)
热门文章
- 70行代码撸一个桌面自动翻译神器(采用Markdown格式编写)
- matlab maximum,maximum size of a string in matlab
- 【设计模式】之抽象工厂模式详解与应用(三)
- 问题创建双网卡后,不能重启网卡的解决办法
- ajax kindeditor textarea,kindeditor编辑器获取不到textarea值的解决方法
- matlab fread精度,matlab中fread函数的应用
- ICSharpCode.TextEditor如何自定义代码折叠和高亮
- 跪求下方支付宝生活号收款码代码或者方法
- java gc与finalize_finalize 与 Java GC
- 日常记录生活中的那些小小事01