Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Javascript权威指南学习总结

Javascript权威指南学习总结

作者头像
wangxl
发布于 2018-03-09 02:19:28
发布于 2018-03-09 02:19:28
7790
举报
文章被收录于专栏:PHP在线PHP在线

1. 函数的定义总是覆盖变量的定义

function f(){

    alert( 1111 );

}

var f = 1;

alert( f );

此时输出的是1111

2. 函数变量的作用域不管定义在函数体内任何地方,都将是作用于整个函数体内

var x = 1;

function f(){

    alert( x );

    var x = 2;

}

f();

输出undefine,JS变量是在预编译期定义的,所以一开始全局变量x 和 局部变量x都已经被解析,函数体内此时的x的值是undefined.

3. hasOwnProperty isPrototypeOf constructor 区别

hasOwnProperty ( obj1.hasOwnProperty( '属性或方法' ) ) 判断属性、方法是否是某个对象的实际属性或方法而非继承来的.

var o = new Object();

o.name = 1;

alert( o.hasOwnProperty('name') );

// 输出 true 表示name是o的实际属性,非继承属性.

isPrototypeOf ( obj2.isPrototypeOf( obj1 ) ) 判断obj2是否在obj1的原型链上;

function o(){ // }

var obj = new o();

alert( o.prototype.isPrototypeOf( obj ) );

// 输出true 表示 o.prototype 在 obj的原型链上

constructor ( obj.constructor ) 返回对象的构造函数.

function o(){ // }

var obj = new o();

alert( obj.constructor ); // 输出o.

4. 构造函数里的成员 和 prototype 区别

定义在构造函数里的成员在每次构造实例的时,会把所有的成员重新定义在该实例上.

function o(){

    this.name = 1;

}

var obj = new o();

alert( obj.hasOwnProperty( 'name' ) );

// 输出true 说明 obj 已经有了非继承的属性name;

定义在 property 里的成员 是继承给实例对象的,实例对象本身并没有 name 属性

function o(){

    // 构造函数

}

o.prototype = {

    name : 1

}

var obj = new o();

alert( obj.hasOwnProperty( 'name' ) );

// 输出 false 说明 obj 的name属性是继承来的而不是本身实际有的name属性.

5. Image对象 图片缓存

1. 使用方法

var i = new Image();    

// 创建Image实例用于预加载图片

i.src = '1.jpg';    

// 此时完成1.jpg的预加载

// 当执行img的src时 如果i的图片加载完,则直接调用。

2. Image对象的方法

var i = new Image();

// onload 方法表示图片是否加载完成

i.onload = function (){

}

3.Image对象的属性 complete ,当complete值为false时表示图片的onload未执行,即img未加载完。当图片加载完成时,complete的值为true ( 前提是未调用Image对象的onerror和onabort事件,因为调用了这3个事件的任何一个complete的值都将边为true )

例子: 图片加载未完成时,可以载入一个加载中的gif动画,等img.onload事件执行时再加载图片.

window.onload = function (){

  var i = new Image();    

i.src = 'a.jpg';    

if(!i.complete){       

img.src='x.gif';     

}     

i.onload = function (){        

img.src=i.src;    

}

}

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 php 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Javascript 面向对象编程(一):封装
学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难。因为Javascript的Object模型很独特,和其他语言都不一样,初学者不容易掌握。 下面就是我的学习笔记,希望对大
ruanyf
2018/04/12
7140
Javascript 面向对象编程(一):封装
万字长文深度剖析面向对象的javascript
本将会深入讲解面向对象在javascript中的应用,并详细介绍三种对象的生成方式:构造函数,原型链,类。
程序那些事
2020/12/14
3790
JavaScript之面向对象学习一
1、通过Object构造函数和对象字面量来创建对象缺点:使用同一个接口创建很多的对象,会产生大量的重复代码。比如我需要创建人的对象,并且需要三类人,医生、工程师、老师,他们可以抽象出很多属性,比如姓名、年龄、工作等,只是各自的值不一样,如果这里我用Object或者对象字面量来创建的话,那我必须每个人都写一次这三个属性,造成了代码重复。 2、思考下方法一的问题,我们发现我们可以通过一个工厂来创建对象,这样做的好处是,我们能把一些共同的属性封装到工厂里面,而我们创建对象时,只需要把对象的参数,传递给工厂函数,在
郑小超.
2018/01/24
5240
JavaScript之面向对象学习一
JavaScript设计模式--代理模式
代理模式:为一个对象提供一个代用品或占位符,以便控制对它的访问。 代理分为:保护代理和虚拟代理 保护代理:用于控制不同权限的对象对目标对象的访问,在JavaScript中很难判断谁访问了某个对象,所以保护代理很难实现。
奋飛
2019/08/15
4970
JavaScript面向对象精要(二)
构造函数就是用new创建对象时调用的函数。使用构造函数的好处在于所有用同一个构造函数创建的对象都具有同样的属性和方法。
奋飛
2019/08/15
4780
一文完全吃透 JavaScript 继承(面试必备良药)
继承给我们提供了一种优雅可复用的编码方式,继承也是面试中经常被问到的问题,本文全面总结了JavaScript 中的继承类型、各个继承类型的优缺点及使用场景等,一文吃透 JavaScript 继承,收藏起来吧~
winty
2020/02/24
4840
一文完全吃透 JavaScript 继承(面试必备良药)
Javascript之其实我觉得原型链没有难的那么夸张!
  原型链、闭包、事件循环等,可以说是js中比较复杂的知识了,复杂的不是因为它的概念,而是因为它们本身都涉及到很多的知识体系。所以很难串联起来,有一个完整的思路。我最近想把js中有点意思的知识都总结整理一下,虽然逃不开一些一模一样的内容,但是自己造一下轮子,按照自己的思路。也别有一番味道。
zaking
2020/08/19
8140
一篇JavaScript技术栈带你了解继承和原型链
在学习JavaScript中,我们知道它是一种灵活的语言,具有面向对象,函数式风格的编程模式,面向对象具有两点要记住,三大特性,六大原则。
达达前端
2019/11/19
5020
JavaScript中prototype用法
大部分面向对象的编程语言,都是以类class作为对象的基础语法,js语言不是如此,它的面向对象编程基于‘原型对象’。
全栈程序员站长
2022/09/15
5520
javaScript 的面向对象程序
数据属性(数据属性包含一个数据值的位置,这个位置可以读取和写入值,数据属性有4描述)
用户1197315
2019/12/30
1.2K0
你根本不懂Javascript(EP4 this关键字和对象原型)
同时注意如果给this传进原始类型的数据时,对应数据会进行装包(boxing),即转换成对应 Obj (new String(……), new Boolean(……), or new Number(……), respectively)
szhshp
2022/09/21
3300
重读《JavaScript高级程序设计》
ECMAScript 函数不能像传统意义上那样实现重载。而在其他语言(如Java)中,可以为一个函数编写两个定义,只要这两个定义的签名(接受的参数类型和数量)不同即可[p66]。ECMAScript的类型是松散形的,没有签名,所以是没有重载的。
Jimmy_is_jimmy
2019/07/31
1.2K0
JavaScript面向对象与原型
javaScript有两种开发模式:1.函数式(过程化),2.面向对象(OOP)。面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。但是,javaScript没有类的概念,因此它的对象也与基于类的语言中的对象有所不同。 一.创建对象 创建一个对象,然后给这个对象新建属性和方法。 var box = new Object(); //创建一个Object对象 box.name = 'Lee';
汤高
2018/01/11
8150
JavaScript面向对象与原型
JavaScript创建对象的7种模式
1)工厂模式 这种模式抽象了创建具体对象的过程 考虑到在 ECMAScript 中无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节 function createPerson(name, age, job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function(){ alert(this.name); }; return o;}var person1 = creat
用户1667431
2018/04/18
8780
JavaScript创建对象的7种模式
「转」javascript中的prototype
在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例。但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不是基于‘类的',而是通过构造函数(constructor)和原型链(prototype chains)实现的。但是在ES6中提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让原型对象的写法更加清晰、更像面向对象编程的语法而已。
音视频_李超
2020/04/01
6620
「转」javascript中的prototype
2020回顾-个人web分享JavaScript面试题附加回答
对于在JavaScript中的字符串,对象,数组是没有固定大小的,只有当对他们进行动态分配存储时,解释器就会分配内存来存储这些数据,当JavaScript的解释器消耗完系统中所有可用的内存时,就会造成系统崩溃。
达达前端
2021/01/05
1.8K0
javascript 原型及原型链详解
我们创建的每个函数都有一个 prototype (原型)属性,这个属性是一个指针,指向一个原型对象,而这个原型对象中拥有的属性和方法可以被所以实例共享。 function Person(){ } Person.prototype.name = "Nicholas"; Person.prototype.age = 29; Person.prototype.sayName = function(){ alert(this.name); }; var person1 = new Person(); person1
柴小智
2018/04/10
8330
javascript 原型及原型链详解
熬夜7天,我总结了JavaScript与ES的25个重要知识点!
说起JavaScript,大家都知道是一门脚本语言。那么ES是什么鬼呢?ES全称ECMAScript ,是JavaScript语言的国际标准。
达达前端
2020/09/17
1.9K0
熬夜7天,我总结了JavaScript与ES的25个重要知识点!
【建议】记录一次BAT一线互联网公司前端JavaScript面试
你需要一些HTML和css的基础知识,掌握JavaScript和ES6的基本语法,对事物的好奇心。
达达前端
2022/04/13
1.8K0
【建议】记录一次BAT一线互联网公司前端JavaScript面试
JavaScript权威指南 - 对象
JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删。 JavaScript中的所有事物都是对象:字符串、数字、数组、日期,等等。 JavaScript对象除了可以保持自有的属性外,还可以从一个称为原型的对象继承属性。对象的方法通常是继承的属性。这种“原型式集成”是JavaScript的的核心特征。
Esofar
2018/09/05
1.3K0
相关推荐
Javascript 面向对象编程(一):封装
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档