// js 6种数据类型:字符串、数值、布尔值、undefined、null、object
// 三种非数字的数字类型:Infinity -Infinity NaN
var str = "Hello,world" //string
var i = 10 //number
var f = 2.3 //number
var b = true //boolean
var leftShift = 1 << 2
// 一些容易忘记的东西
// 1.string 是可以用 < > 比较的
var str1 = 'hello'
var str2 = 'world'
// 2. == 会进行类型转换后在比较 ,=== 相当于 equals
// null == underfined underfined派生自null 所以类型转换后 比较为true
// null === underfined false null相当于程序级别,underfined相当于系统级别
// 3.优先级怪像
// 13 + !0 = 14 "13" + !0 = "13true"
// 常用的工具
// "This is a string".charAt(0)
// "Hello world".substring(0,5) Hello
// "Hello".length
// 真值就是除了假值 false null underfined NaN "" 0
// 数组是可变的
var myArray = ["Hello",45,true]
myArray.push(null)
// KV无序集合
// 如果呢 key 本身是 identifier 那就不需要引号来引了
var myObj = {key1:'Hello',key2:'World'}
// 任何情况都建议使用 [] 访问属性
var key = myObj['key1']
// 利用短路原则可以做出 default 值效果
var othername = null //意思一下给个 程序级别的null值
var name = othername || 'default' ;
// 一种情况下省略 分号 是不好的,就是 return 语句
// return 语句将被自动插上 ; 导致返回 underfined
// Node 和 browser 提供了工具
// setTimeout() 异步 = 消息 = 通讯
// 同步 = 事件 = 计算
// 灰常重要的作用域问题,javascript 函数是有作用域但是 {} 不代表有作用域
// 这意味着 在 {} 里面声明局部变量,在 {} 外部可以访问 【只有函数作用域】
// 【立即执行匿名函数模式】防止局部变量扩散到全局作用域
(function(){
var temp = 5;
global.permanent = 10;
})()
// 【闭包】内部函数有访问外部函数变量的能力
var foo = (function(){
var password;
return {
getPassword:function(){
return password;
},
setPassword:function(value){
password = value;
}
};
}());
foo.setPassword('123456')
// this 可以访问 对象上下文【绑定的 key】
// 离开这个对象上下文 把函数暴露出去,相当于函数被扔出去了
// 所以 无法访问 得到就是系统级别的 underfined
// 换种思路 那么只要在这个 对象上下文 就可以访问了
var myObj = {
 
myFunc: function(){
return this.myString;
},
myString: "Hello world!",
};
// myObj.myFunc(); // = "Hello world!"
// 【只要在对象上下文】 我们写个函数用this就能访问到了
var myOtherFunc = function(){
return this.myString.toUpperCase();
}
// ①
myObj.myOtherFunc = myOtherFunc
// 甚至【指定对象上下文】 apply和call区别就是形参不一样
// 这样就有三种方式不在定义里面 实现访问对象绑定的key了。
// ②、③
myOtherFunc.call(myObj, " And Hello Moon!");
myOtherFunc.apply(myObj, [" And Hello Sun!"]);
// 【借助指定对象上下文】 apply 也是一个强大的工具
// 这种情况 Math.min 没办法接受一个 Array
var minVal = Math.min.apply(Math,[43,2,78])
// 【直接绑定到对象上下文】
// 赋值给变量 实现可重用
var okFunc = myOtherFunc.bind(myObj)
// 柯里化 curry?直观上是把函数(模板)其中部分形参 固定成常量
// 就有了一个新的函数?【bind也是要传入一个对象上下文】
var product = function(a,b){return a*b }
var doubler = product.bind(this,2) // function(b){b*2}
// new 关键字 对应【构造函数】
var MyConstructor = function(){
this.myNumber = 5;
}
var myNewObj = new MyConstructor() //{myNumber:5}
// ========【原型】========
// 每一个js对象都有一个原型
// 在访问没有定义属性的对象,解释器会去寻找对象原型
// __proto__ 是唯一能够直接修改原型影响到所有对象的方法
// 间接的标准方法有两种
// ① 通用 使用构造函数的属性 prototype (仍然是动态的)
MyConstructor.prototype = {
myNumber:5,
getMyNumber:function(){
return this.myNumber;
}
};
// ② ES5还是ES6 因为有ES3这个东西 以下是新的
// var yourObj = Object.create(原型) (并没有深拷贝)
// 【利用原型可以给基本类型添加方法】
// String是string的包装类型 Number是number的包装类型
// ===强比较会去比较基本类型和引用类型 所以两者强比较会是false
String.prototype.firstCharacter = function(){
return this.charAt(0)
}
// 通过这种方法可以让老浏览器也能用上Object.create
if (Object.create === undefined){
Object.create = function(proto){
var Constructor = function(){}
Constructor.prototype = proto
return new Constructor()
}
}
 
学习的话 从这里开始,安装node环境,控制台打印就可以了
…………………………………………………………………………………………………………………………………………………………………………………………………………

console.log("abc".firstCharacter())

function SuperType(){
this.property = true;
}
SuperType.prototype.getSuperValue = function(){
return this.property;
}
function SubType(){
this.subproperty = false;
}
SubType.prototype = new SuperType();
SubType.prototype.getSubValue = function(){
return this.subproperty;
}
var instance = new SubType();
instance.getSuperValue(); // true

快速学习 javascript的更多相关文章

  1. 十大免费教程资源帮助新手快速学习JavaScript

    “JavaScript”的名头相信大家肯定是耳熟能详,但只有一小部分人群了解它的使用与应用程序构建方式.这“一小部分”人指的当然是技术过硬的有为青年.网络程序员以及IT专业人员.但对于一位新手或者说外 ...

  2. 零基础:如何快速学习JavaScript,html+css技术

    前端开发要学的知识内容涉及的会很宽泛,虽然说主要是HTML.CSS和JavaScript这些基础知识点,但达妹今天想强调一下,学前端开发除了要学这些基础知识外,学员还要在这之上进行延伸和深入的去学,而 ...

  3. 快速学习JavaScript面向对象编程

    到处都是属性.方法,代码极其难懂,天哪,我的程序员,你究竟在做什么?仔细看看这篇指南,让我们一起写出优雅的面向对象的JavaScript代码吧! 作为一个开发者,能否写出优雅的代码对于你的职业生涯至关 ...

  4. 快速学习javascript对象-遍历对象

    为了方便了解每个javascript对象包含的方法,我写一个函数. function GetCollection(obj){ try{ if(obj){ var sType=""; ...

  5. 如何快速检查js语法学习Javascript

    这里给大家推荐一个快速进行语法检查的方法,可以发现绝大多数语法错误,也可以作为在线编辑器,提高编程效率. 地址:http://www.jslint.com/ 同时推荐一个在线学习Javascript的 ...

  6. 如何从源码中学习javascript

    艾伦说啊,学习javascript,必须要学会看源码,通过高手的源码,你可以从中吸取很多书本上难以看到的技巧. 看源码就好像喝鸡汤,所有的营养都在这汤里了.这汤就是源码,高手写的源码,就是最好的鸡汤. ...

  7. 更快学习 JavaScript 的 6 个思维技巧

    更快学习 JavaScript 的 6 个思维技巧 我们在学习JavaScript,或其他任何编码技能的时候,往往是因为这些拦路虎而裹足不前: 有些概念可能会造成混淆,尤其当你是从其他语言转过来的时候 ...

  8. 如何正确学习JavaScript

    不要这样学习JavaScript 不要一开始就埋头在成堆的JavaScript在线教程里 ,这是最糟糕的学习方法.或许在看过无数个教程后会有点成效,但这样不分层次结构地学习一个东西实在是十分低效,在实 ...

  9. 「译」如何正确学习JavaScript

    原文:How to Learn JavaScript Properly 目录 不要这样学习JavaScript 本课程资源 1-2周(简介,数据类型,表达式和操作符) 3~4周(对象,数组,函数,DO ...

随机推荐

  1. redis 从入门到遗忘

    Key操作 keys * *: 通配任意多个字符 ?: 通配单个字符 []: 通配括号内的某1个字符 exists key 存在返回1,不存在返回0 type key rename oldkey ne ...

  2. Vagrant 遇到的问题

    Vagrant was unable to mount VirtualBox shared folders. This is usuallybecause the filesystem "v ...

  3. django 通过邮箱和用户名都能登录

    一. 在settings.py 文件中的#Application definition 下增加代码: AUTHENTICATION_BACKENDS=( 'users.views.CustomBack ...

  4. golang与vscode的安装与配置

    一.golang的下载与安装 以下都是win10的安装与配置 go语言官方下载地址:https://golang.org/dl/ 找到适合你系统的版本下载 傻瓜式安装开始... 二.golang环境变 ...

  5. qrcode.js 动态生成二维码

    用qrcode.js动态生成二维码图片非常简单,只需要引入qrcode.js即可使用,而且可以自定义图片大小.背景色等信息. 1.jsp代码---页面头部引入qrcode.js,jquery文件可选 ...

  6. Codeforces Round #529 (Div. 3) F.Make It Connected

    传送门 题意: 有 n 个顶点,每个顶点有个花费 a[ i ],连接顶点 u,v 需要花费 a[v]+a[u]的代价. 有 m 个特殊边,每条边有三个参数 u,v,w 代表的意思是连接 u,v 的花费 ...

  7. POJ 2299树状数组求逆序对

    求逆序对最常用的方法就是树状数组了,确实,树状数组是非常优秀的一种算法.在做POJ2299时,接触到了这个算法,理解起来还是有一定难度的,那么下面我就总结一下思路: 首先:因为题目中a[i]可以到99 ...

  8. Java如何判断文件或者文件夹是否在?不存在如何创建?

    Java如何判断文件或者文件夹是否在?不存在如何创建?   1. 首先明确一点的是:test.txt文件可以和test文件夹同时存在同一目录下:test文件不能和test文件夹同时存在同一目录下. 原 ...

  9. AOP和IOC

    AOP切面编程,作用:事务,日志,统一调用,统一实现,拦截,分发: 切点:告诉编译器切面作用于哪个package中的class IOC:控制反转,相对于new 对象来说的,依赖注入:AuthorWar ...

  10. mysql视图、触发事务、存储过程

    视图 视图是一个虚拟表(非真实存在的),其本质就是根据SQL语言获取动态的数据集,并为其命名,用户使用时只需要使用名称即可获得结果集,可以将结果集当做表来使用. 视图是存在数据库中的,如果我们程序中使 ...