// 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. cf1000E We Need More Bosses (tarjan缩点+树的直径)

    题意:无向联通图,求一条最长的路径,路径长度定义为u到v必须经过的边的个数 如果把强联通分量都缩成一个点以后,每个点内部的边都是可替代的:而又因为这是个无向图,缩完点以后就是棵树,跑两遍dfs求直径即 ...

  2. bzoj3756pty的字符串(后缀自动机+计数)

    题目描述 题解 我们可以先对trie树建出广义SAM,然后维护一下right集合大小(注意right集合在广义SAM上的维护方式). 然后把匹配穿往广义SAM上匹配,假设现在匹配到了x节点,那么x的所 ...

  3. centos7下利用httpd2.4配置svn并使用Ldap用户认证

    应用场景:Windows下有AD活动目录,类Unix系统下有Ldap,在运维开发工具平台逐步丰富的现在,统一用户管理大大便捷了管理人员. 其中不乏经典版本控制管理工具svn,与Ldap组合的用户认证方 ...

  4. Web Deploy 服务器安装设置与使用

    一.服务器的安装设置 1.在windows server上确保IIS安装了[管理服务]这个功能.方法是在[服务器管理器]=>[管理]=>[添加角色和功能]=>[下一步]=>[基 ...

  5. 向redis中添加删除list列表

    转: 向redis中添加删除list列表 2018年04月18日 15:44:54 luo_yu_1106 阅读数:4082   一.添加 向redis中添加队列有两种方式 1.lpush l是lef ...

  6. 第二节,神经网络中反向传播四个基本公式证明——BackPropagation

    假设一个三层的神经网络结构图如下: 对于一个单独的训练样本x其二次代价函数可以写成: C = 1/2|| y - aL||2 = 1/2∑j(yj - ajL)2 ajL=σ(zjL) zjl = ∑ ...

  7. Oracle的DQL

    基本查询: 链接语句: sqlplus scott/tiger@192.168.56.101:1521/orcl SQL> --清屏 SQL> host cls (host clear) ...

  8. javascript学习一、js的初步了解

    1.javascript的简介: *javascript 是一种基于对象和事件驱动的语言,主要应用于客户端. -- 基于对象:  ** 提供了很多对象,可以直接使用. --事件驱动: ** html做 ...

  9. glob.glob 匹配文件

    glob.glob以列表形式返回匹配的文件路径 只有一个参数:文件的匹配规则 e.g. >>>res_home = '/vip_data_center/test_envs/train ...

  10. DB9 ------ 接口定义

    下图是母座和公座的接口定义: 特别提醒:以上是公座和母座的接口定义,如果是串口线,RXD就变成TXD,以此类推.