js面向对象

js作用域

被刻印的时光 ゝ 提交于 2020-04-01 06:12:11
1.js的作用域是有函数划分的,而不是块儿 var too="test"; if(true){//这是在块中的定义,此时还是全局变量 var too="new test"; } alert(too=="new test");//return true; function test() { var too="old test";//这是在函数中的定义,此时是局部变量 } test(); alert(too=="new test");//return true;too并没有改变 2.所有属于全局作用域的变量都是window对象的属性 上面例子中 第一行的 too就是等于 window.too 看下面的例子 function test() { too="test"; } test(); alert(window.too="test"); 是不是很奇怪,上面例子中函数中的too是局部变量,在这里就是全局变量了 注意下两个例子的区别,一个通过显示声明 var too 一个隐示声明too="test"; 也就是说没有显示定义的变量,它就是全局变量,虽然它可能只能在这个函数内使用。 作用域(scope)是JavaScript语言的基石之一,在构建复杂程序时也可能是最令我头痛的东西。记不清多少次在函数之间传递控制后忘记 this关键字引用的究竟是哪个对象,甚至,我经常以各种不同的混乱方式来曲线救国

js面向对象编程-高级内容

这一生的挚爱 提交于 2020-03-27 06:39:28
JavaScript面向对象 一、为每个对象动态添加属性或方法 功能:返回对象类型原型的引用 prototype的使用 格式:class.prototype 场景: 比如说:A写了一个类,交给B,B在使用时发现A写的类的功能有所欠缺,但是B没有权力改写A的文件,这时该怎么办? Function Person(name1,age1){ This.name=name1; This.age=age1; } Var p1=new Person(‘zhangsan’,30); p1.sex=’男’ B认为这个类还应该有一个sex属性: function Preson(name,age){ this.name=name; This.age=age; } var p1=new Person('zhangsan',30); var p2=new Person('lisi',20); //p2没有sex属性 //以后每次实例化的person类对象都会自动拥有sex属性 //即使是之前创建的person类对象也会自动拥有sex属性 //为Person类添加了一个叫sex的成员属性 Person.prototype.sex='男'; Person.prototype.say=function(){ //为Person类添加了一个say成员方法 alert(this.name+this.age+this

简单粗暴地理解js原型链--js面向对象编程

∥☆過路亽.° 提交于 2020-03-11 21:51:00
简单粗暴地理解js原型链--js面向对象编程 原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好。 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么。简单粗暴点看原型链吧,想点与代码无关的事,比如人、妖以及人妖。 1)人是人他妈生的,妖是妖他妈生的。人和妖都是对象实例,而人他妈和妖他妈就是原型。原型也是对象,叫原型对象。 2)人他妈和人他爸啪啪啪能生出一堆人宝宝、妖他妈和妖他爸啪啪啪能生出一堆妖宝宝,啪啪啪就是构造函数,俗称造人。 3)人他妈会记录啪啪啪的信息,所以可以通过人他妈找到啪啪啪的信息,也就是说能通过原型对象找到构造函数。 4)人他妈可以生很多宝宝,但这些宝宝只有一个妈妈,这就是原型的唯一性。 5)人他妈也是由人他妈他妈生的,通过人他妈找到人他妈他妈,再通过人他妈他妈找到人他妈他妈……,这个关系叫做原型链。 6)原型链并不是无限的,当你通过人他妈一直往上找,最后发现你会发现人他妈他妈他妈……的他妈都不是人,也就是原型链最终指向null。 7)人他妈生的人会有人的样子,妖他妈生的妖会有妖的丑陋,这叫继承。 8)你继承了你妈的肤色,你妈继承了你妈他妈的肤色,你妈他妈……,这就是原型链的继承。 9)你谈对象了,她妈让你带上房产证去提货,你若没有,那她妈会问你妈有没有,你妈没有那她妈会问你妈她妈有没有…

JS高级

只谈情不闲聊 提交于 2020-03-01 15:35:11
1. 正则表达式: 2. String中的正则API: 1. 正则表达式: 2. String中的正则API: 查找: 1. 查找一个固定的关键词出现的位置: var i=str.indexOf("关键词"[,starti]) 在str中从starti位置开始找下一个"关键词"的位置 如果省略starti,则默认从0位置开始向后找 返回: “关键词”第一字所处位置的下标 如果找不到,返回-1 问题: 只支持查找一个固定不变的关键词 2. 用正则表达式查找一个关键词的位置: var i=str.search(/正则/i); 在str中查找符合"正则"要求的敏感词 返回值: 关键词的位置 如果找不到,返回-1 问题: 正则默认区分大小的! 解决: 在第2个/后加后缀i,表示ignore,意为:忽略大小写 问题: 只能获得关键词的位置,不能获得关键词的内容 解决: match 3. match: 1. 查找一个关键词的内容和位置: var arr=str.match(/正则/i); 在str中查找符合"正则"要求的敏感词的内容和位置 返回值: 数组arr:[ "0":"关键词", "index": 下标i ] 如果找不到: 返回null 问题: 只能查找第一个关键词,不能查找更多关键词 2. 查找所有关键词的内容: var arr=str.match(/正则/ig) //g global

JS基础——原型与原型链

青春壹個敷衍的年華 提交于 2020-02-24 21:59:58
前言 最近在整理一些js的基础知识刚好整理到原型 构造函数 每个构造函数(constructor)都有一个原型对象(prototype), 原型对象都包含一个指向构造函数的指针, 而实例(instance)都包含一个指向原型对象的内部指针. 先来看一个例子 function Person(name, age, job) { this.name = name this.age = age this.job = job this.sayName = function() { alert(this.name) } } var person1 = new Person('Zaxlct', 28, 'Engineer') var person2 = new Person('Mick', 23, 'Doctor') 上面的例子中 person1 和 person2 都是 Person 的实例。这两个实例都有一个 constructor (构造函数)属性,该属性(是一个指针)指向 Person。 即: console.log(person1.constructor == Person) //true console.log(person2.constructor == Person) //true prototype 每个构造函数都有一个 prototype 属性

js 函数讲解

这一生的挚爱 提交于 2020-02-09 07:15:32
函数 来自 《JavaScript 标准参考教程(alpha)》 ,by 阮一峰 目录 概述 函数的声明 函数的重复声明 圆括号运算符,return 语句和递归 第一等公民 函数名的提升 不能在条件语句中声明函数 函数的属性和方法 name 属性 length 属性 toString() 函数作用域 定义 函数内部的变量提升 函数本身的作用域 参数 概述 参数的省略 传递方式 同名参数 arguments 对象 函数的其他知识点 闭包 立即调用的函数表达式(IIFE) eval 命令 参考链接 函数是一段可以反复调用的代码块。函数还能接受输入的参数,不同的参数会返回不同的值。 概述 函数的声明 JavaScript 有三种声明函数的方法。 (1)function 命令 function 命令声明的代码区块,就是一个函数。 function 命令后面是函数名,函数名后面是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。 function print(s) { console.log(s); } 上面的代码命名了一个 print 函数,以后使用 print() 这种形式,就可以调用相应的代码。这叫做函数的声明(Function Declaration)。 (2)函数表达式 除了用 function 命令声明函数,还可以采用变量赋值的写法。 var print =

JS高级第1天

不羁岁月 提交于 2020-01-24 06:45:59
阶段目标 主要学习 JS 的 面向对象 编程思想。 对象 概念 在编程领域,任何 事 和 物都可以概括成对象。 对象概念练习 用编程思想抽象出你心仪对象的属性和方法。 对象由属性和方法组成,属性和方法都可以用 键值对 定义。 心仪对象: 属性:特征 身高:150 cm 年龄:36 性别:女 腿:大长腿 方法:功能 - 函数 生活技能:煮饭 运动技能:打篮球 艺术技能:rap <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script> // 创建一个对象 var person = { // 对象的属性 - 特征 height: "170cm", age: 36, sex: "女", leg: "大长腿", // 生活技能 // 对象的方法 - 功能,技能,函数 liveSkill:function(){ console.log('生活技能: 煮饭'); }, sportSkill

转:彻底理解js中this的指向,不必硬背

丶灬走出姿态 提交于 2020-01-17 13:50:46
转: http://www.cnblogs.com/pssp/p/5216085.html 首先必须要说的是, this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁 , 实际上this的最终指向的是那个调用它的对象( 这句话有些问题,后面会解释为什么会有问题,虽然网上大部分的文章都是这样说的,虽然在很多情况下那样去理解不会出什么问题,但是实际上那样理解是不准确的,所以在你理解this的时候会有种琢磨不透的感觉 ) ,那么接下来我会深入的探讨这个问题。   为什么要学习this?如果你学过函数式编程,面向对象编程,那你肯定知道干什么用的,如果你没有学过,那么暂时可以不用看这篇文章,当然如果你有兴趣也可以看看,毕竟这是js中必须要掌握的东西。 例子1: function a(){ var user = "追梦子"; console.log(this.user); //undefined console.log(this); //Window } a(); 按照我们上面说的this最终指向的是调用它的对象,这里的函数a实际是被Window对象所点出来的,下面的代码就可以证明。 function a(){ var user = "追梦子"; console.log(this.user); //undefined console.log(this);  /

JS高级---继承

馋奶兔 提交于 2020-01-07 17:17:16
继承 面向对象编程思想: 根据需求, 分析对象, 找到对象有什么特征和行为, 通过代码的方式来实现需求, 要想实现这个需求,就要创建对象 ,要想创建对象, 就应该显示有构造函数, 然后通过构造函数来创建对象, 通过对象调用属性和方法来实现相应的功能及需求, 即可 需注意 首先,JS不是一门面向对象的语言, JS是一门基于对象的语言, 那么为什么学习js还要学习面向对象, 因为面向对象的思想适合于人的想法, 编程起来会更加的方便,及后期的维护.... 面向对象的编程语言中有类(class)的概念(也是一种特殊的数据类型), 但是JS不是面向对象的语言, 所以, JS中没有类(class), 但是JS可以模拟面向对象的思想编程, JS中会通过构造函数来模拟类的概念(class) 面向对象的特性:封装,继承,多态 封装: 就是包装 一个值存储在一个变量中--封装 一坨重复代码放在一个函数中--封装 一系列的属性放在一个对象中--封装 一些功能类似的函数(方法)放在一个对象中--封装 好多相类似的对象放在一个js文件中---封装 继承: 首先继承是一种关系,类(class)与类之间的关系, JS中没有类, 但是可以通过构造函数模拟类, 然后通过原型来实现继承 继承也是为了数据共享,js中的继承也是为了实现数据共享 原型作用之一:数据共享,节省内存空间 原型作用之二:为了实现继承

js面向对象编程

自作多情 提交于 2020-01-02 03:05:43
<script> /* 定义一个函数 function 函数名(){ 代码块 } 需求1:写一个函数,实现1到100相加 */ function sum(){ var num = 0; for(i=1;i<=100;i++){ num += i; } console.log(num); } /* 调用函数,使用函数 函数名(); */ sum(); function fist(){ var a = 0; for(j=50;j<=500;j++){ a += j; } document.write(a+'<br>'); } // 使用函数 fist(); </script> --------------------- 作者:樊小勇 来源:CSDN 原文:https://blog.csdn.net/weixin_42396884/article/details/89331355 版权声明:本文为博主原创文章,转载请附上博文链接! 来源: https://www.cnblogs.com/-Miya/p/10767737.html