JavaScriptOOP
| 1. OOP基础 |
1.1面向对象编程OOP
1.2类和对象
function Person(name,age){
this.name=name;
this.age=age;
this.say=function(content){
// 在类中,访问类自身的属性,必须使用this.属性 调用
alert("我叫"+this.name+",今年"+this.age+"岁。我说了一句话:"+content);
}
}
var zhangsan = new Person("张三",18);
var obj = new 类名(属性1的具体值);
var s="123"; // 不是对象
s.name="aaa";
console.log(typeof s); // String
console.log(s.name); // Undefined 字面量声明的字符串不是对象,不能添加属性。
| 2. 成员属性、静态属性和私有属性 |
2.1成员属性与成员方法
var zhangsan = new Person("张三");
zhangsan.age = 14; // 追加成员属性
console.log(zhangsan.age); // 调用成员属性
2.2静态属性与静态方法
Person.count = "60亿"; // 声明静态属性
console.log(Person.count); // 调用静态属性
var lisi = new Person("李四");
console.log(lisi.count); // Undefined 静态属性是属于类的,只能用类名调用
2.3私有属性与私有方法
function Person(){
var num = 1; // 私有属性
function func(){}; // 私有方法
}
私有属性和私有方法的作用域,只在构造函数内部有效。即,只能在构造函数内部使用,无论使用对象名还是类名都无法调用。
| 3. JS模拟实现封装 |
function Person(){
var age=0;
this.setAge=function(ages){
age=ages;
}
this.getAge=function(){
return age;
}
}
| 4. JS中的this指向详解 |
4.1谁最终调用函数,this就指向谁
4.2this指向的规律!!!(与函数的调用方式息息相关)
func();
obj.func(); // 狭义对象
document.getElementById("div1").onclick = func; // 广义对象
var arr = [1,2,3,func,4,5,6];
arr[3]();
setTimeout(func,1000);
var obj1 = new func();
| 5. 原型与原型链 |
5.1__proto__与prototype
5.2原型链的指向问题
| 6. 原型属性与原型方法 |
function Person(){
this.name = "张三"; // 成员属性
}
Person.prototype.say = function(){};
/**
* 给数组添加一个遍历打印所有值的方法
*/
Array.prototype.eachAll = function(){
for (var i=0;i<this.length;i++) {
console.log(this[i]);
}
}
var arr = [1,2,3,4,5,6,7];
arr.eachAll();
| 7. for-in循环 |
function Person(){
this.name = "张三";
this.age = 14;
this.func1 = function(){
}
}
Person.prototype.name1 = "zhangsan";
Person.prototype.age1 = 15;
Person.prototype.func2 = function(){};
var zhangsan = new Person();
for(keys in zhangsan) {
if (zhangsan.hasOwnProperty(keys)) {
console.log(zhangsan[keys]);
}
}
| 8. 继承 |
8.1扩展Object实现继承
function Parent(){}
function Son(){}
Object.prototype.extend = function(parent){
for(var i in parent){
this[i]=parent[i];
}
}
var p = new Parent();
var s = new Son();
s.extend(p);
8.2使用原型实现继承
function Parent(){}
function Son(){}
Son.prototype = new Parent();
var s = new Son();
8.3call/apply/bind实现继承
function Parent(name){}
function Son(no,name){
this.no = no;
Parent.call(this,name);
}
var s = new Son(12,"张三");
| 9. 闭包 |
function func1(){
var num = 1;
function func2(){
return num;
}
return func2;
}
var num = func1()();
JavaScriptOOP的更多相关文章
- 初识JavaScriptOOP(js面向对象)
初识JavaScriptOOP(js面向对象) Javascript是一种基于对象(object-based)的语言, 你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言 ...
- 详解面向对象编程——JavaScriptOOP
前 言 絮叨絮叨 学习了JS之后,不知道大家觉得怎们样呢? 今天我们就来讲一下JS中最重要的一个环节,JavaScript中的面向对象编程OOP,这里的东西有点难,也有点绕. 可是! 不要灰 ...
- javascript-OOP基础详解
前 言 S N 今天给大家详解一下面向对象编程(简称OOP)基础,OOP 语言使我们有能力定义自己的对象和变量类型 .对象拥有属性和方法 . 所以今天就给大家详解对象和类 . 1-1简介 ...
- 【JavaScript OPP基础】---新手必备
今天和大家分享一下近期整理的有关JavaScriptOPP的基础知识~~~我们一起来学习一下-- JavaScriptOPP基础 一.面向对象编程OOP1.语言的分类:面向机器:汇编语言面向过程:C语 ...
- JavaScript模块化演变 CommonJs,AMD, CMD, UMD(一)
原文链接:https://www.jianshu.com/p/33d53cce8237 原文系列2链接:https://www.jianshu.com/p/ad427d8879cb 前端完全手册: h ...
随机推荐
- hibernate 教程(3)—NHibernate查询语言HQL
NHibernate之旅(3):探索查询之NHibernate查询语言(HQL) 本节内容 NHibernate中的查询方法 NHibernate查询语言(HQL) 1.from子句 2.select ...
- 【★】致全球第一批全帧3D游戏!
图一 游戏片头 致逝去的青春记忆. 好久没人玩Ballance了吧,贴吧里貌似早已冷掉了. 作为一款经典游戏,Ballance的宣传却做得不到位,官方的介绍甚至没能展现出它的全部诱人之处.所以笔者决 ...
- (1)ES6中let,const,对象冻结,跨模块常量,新增的全局对象介绍
1.let声明变量,var声明变量,而const声明的常量 2.let与var的区别 let可以让变量长期驻扎在内存当作 let的作用域是分块[ {快1 {快2 } }每个大括号表示一个独立的块 ...
- 【集美大学1411_助教博客】团队作业10——项目复审与事后分析(Beta版本)
写在前面的话 软件工程课结束了,大家开心吗?是不是再也不用熬夜写代码了?如果这门课你真的熬夜写代码了,相信你一定有收获,如果这门课结束了你觉得是自己一个全新的开始,那么这门课的意义就实现了.团队作业全 ...
- 团队作业八——第二次团队冲刺(Beta版本)第5天
团队作业八--第二次团队冲刺(Beta版本)第5天 一.每个人的工作 (1) 昨天已完成的工作 完成界面跳转界面. (2) 今天计划完成的工作 简单模式逻辑代码涉及与相关功能的具体实现 (3) 工作中 ...
- 201521123075 《Java程序设计》第8周学习总结
1. 本周学习总结 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 进行删除操作的时候最好从末尾开始删除.如果从开头开始删除,会使每个元素的对应位置发生 ...
- 201521123114 《Java程序设计》第7周学习总结
1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 Q1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 public b ...
- 201521123060《Java程序设计》第2周学习总结
1. 本周学习总结 a.进一步熟悉了Eclipse的使用和java程序的编写: b.学习了java数据的基本类型:整数类型,浮点类型等: c.学习了算数运算符,赋值运算符,位运算符,关系运算符,逻辑运 ...
- 2017Java课程设计201521123007
1. 课程设计博客链接 项目地址 2. 个人负责模块或任务说明 ps:一个人做的项目 一个登录jsp文件,登录成功转入商品界面, 一个商品jsp文件,显示所有商品信息,数据从MySql数据库导入,可以 ...
- 201521123056 《Java程序设计》第12周学习总结
1. 本周学习总结 2. 书面作业 将Student对象(属性:int id, String name,int age,double grade)写入文件student.data.从文件读出显示. 1 ...