打算把使用Javascript的水平从child提升到小学毕业,近期会持续记录一些知识点。

javascript的引用机制:只要一个对象赋值为另一个对象,就建立了引用。一旦建立了引用,对象们就公用一块空间。可以看下面一段代码:

var  stooge={
nickname:"Maria"
}
var x = stooge;
console.log(stooge.nickname); //Maria x.nickname = 'Curly';
x.realname ="Thomas" console.log(stooge.realname);//Thomas 由x添加的realname属性。 var nick = stooge.nickname; console.log(nick); //显然是Curly console.log(stooge.nickname);//被覆盖为 Curly

javaScript里没有很强的class概念,也没有class和instance的区分。new关键字的用处和java类似,也是创建一个新的对象。但是js中的对象不是只有new才能创建,多种创建方式,例如function这种类型的对象,就可以通过显式声明,赋值给变量,或者调用Function构造函数来构建。

javascript的Prototype:每个对象都有一个prototype,并且从中继承属性。所有对象都继承Object.prototype的属性。创建新对象时可以选择某个对象作为prototype,这样就可以直接继承它的属性了。这里是新开辟一块儿内存空间,而不是引用。通过下面的代码,我们可以方便的让一个对象继承另一个对象的prototype

if(typeof Object.inherit !== 'function'){
Object.inherit = function(obj){
var fun = function(){};
fun.prototype = obj;
return new fun();
};
} var lucasliu={
job:"tester",
hobby:"reading"
} var a=Object.inherit(lucasliu); //“继承“,实际上是copy出了所有属性
console.log(a.job);// tester 继承自lucasliu
a.job = 'doctor';
console.log(a.job);//doctor 值被覆盖为doctor
console.log(lucasliu.job);//tester,lucasliu不受影响 lucasliu.newskill="play piano"; console.log(a.newskill); //play piano a跟着prototype获得了新技能。
 

prototype的属性可以被继承者的同名类型覆盖。通过delete关键字可以清除覆盖。

JavaScript的一些知识碎片(1)的更多相关文章

  1. JavaScript的一些知识碎片(2)-反射-全局变量-回调

    JavaScript中的反射:编程语言中的反射原理都一样,就是通过操作metadata(描述语言的语言)来完成一些不具备反射功能的语言很难实现的功能.在静态语言中,反射是一个高大上的东西,比如在运行时 ...

  2. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  3. 快速掌握JavaScript面试基础知识(三)

    译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...

  4. 快速掌握JavaScript面试基础知识(二)

    译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...

  5. JavaScript 面向对象开发知识基础总结

    JavaScript 面向对象开发知识基础总结 最近看了两本书,书中有些内容对自己还是很新的,有些内容是之前自己理解不够深的,所以拿出来总结一下,这两本书的名字如下: JavaScript 面向对象精 ...

  6. JavaScript的高级知识---词法分析

    JavaScript的高级知识---词法分析 词法分析 词法分析方法: js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 函数在运行的瞬间, ...

  7. javascript的基础知识及面向对象和原型属性

    自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; cons ...

  8. 发发关于JavaScript的感慨,随手记几个js知识碎片

    最近一段时间写了很多JavaScript和jquery代码,越来越感觉js基础不牢固,写一句查半天,有时间肯定要系统的学一下. 不说了,先记一下最近学到的点东西,省的以后没时间系统学js还要再来查. ...

  9. 【知识碎片】JavaScript篇

     40.选择器组合 逗号是多选择器空格 是子子孙孙尖括号 只找儿子 39.失去焦点事件blur $("input").blur(function(){ $("input& ...

随机推荐

  1. [20140711] SQL Server page还原

    create DATABASE T --数据库不能是简单模式 go USE t GO )) GO INSERT INTO dbo.t ( value ) VALUES ( ) ) BACKUP DAT ...

  2. DATETIME类型和BIGINT 类型互相转换

    项目中使用BIGINT来存放时间,以下代码用来转换时间类型和BIGINT类型 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ========= ...

  3. pom.xml 样例

    <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven ...

  4. PHP代码规范

    PHP编码规范 1. 标识符命名规范 标识符的命名力求做到统一.达意和简洁. 1.1 统一 统一是指,对于同一个概念,在程序中用同一种表示方法,比如对于供应商,既可以用supplier,也可以用pro ...

  5. SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行)

    前言 前面几篇我们分析了关于SQL Server关于性能调优的一系列内容,我把它分为两个模块. 第一个模块注重基础内容的掌握,共分7篇文章完成,内容涵盖一系列基础运算算法,详细分析了如何查看执行计划. ...

  6. sql server 有关锁的视图说明 syslockinfo

    ransact-SQL 参考   https://msdn.microsoft.com/zh-cn/library/ms179881.aspx  syslockinfo 包含有关所有已授权.正在转换和 ...

  7. android WebView网页浏览器

    组件位置:composite>WebView .xml <WebView android:id="@+id/webview_pipeweb" android:layou ...

  8. elasticsearch 集群搭建

    需要编辑的文件是config/elasticsearch.yml文件 需要配置的项目有: # Use a descriptive name for your cluster: # cluster.na ...

  9. 使用jquery合并表格中相同文本的相邻单元格

    一.效果 二.代码 <!DOCTYPE HTML> <html> <head> <title>Example</title> <met ...

  10. 《InsideUE4》-3-GamePlay架构(二)Level和World

    UE4深入学习QQ群: 456247757 引言 上文谈到Actor和Component的关系,UE利用Actor的概念组成一片游戏对象森林,并利用Component组装扩展Actor的能力,让世界里 ...