『JavaScript』核心

为什么80%的码农都做不了架构师?>>>   hot3.png

弱类型语言

JavaScript是一种弱类型的语言。变量可以根据所赋的值改变类型。原始类型之间也可以进行类型转换。其弱类型的物质为其带来了极大的灵活性。

注意:原始类型使用值传递,复合类型使用引用传递。

原始类型 Key
布尔型 bool
数值型 number
字符串型 string
空类型 null
未定义类型 undefined

toString方法可以把数值或布尔值转换为字符串。parseFloat和parseInt函数可以把字符串类型转变为数值。双重非『!!』可以把字符串或数值转变为布尔值。

复合类型Key
对象 object
函数 function

prototype

JavaScript是一种基于原型的语言,所以我们可以通过对JavaScript对象的原型进行操作来达成一些目的。比如:

  • 给某个对象添加方法;
  • 给某个对象添加属性;
  • 实现类似面向对象的功能;
  • ...

如果把JavaScript中的所有元素都当成对象来看待的话,我们可以得到一个合理的数据存储方式:JSON。

在JavaScript内部,所有的元素都可以认为是以JSON方式进行存储的。换言之,每一个元素都是有Key以及Value两部分组成。所以以下给对象Anim添加方法的方式都是正确的:

// Anim Classvar Anim = function() {  // ...};// Add function to AnimAnim.prototype.start = function() {};Anim.prototype.stop = function() {};// Another Way to add function to a classAnim.prototype = {  start: function() {    // ...  },  stop: function() {    // ...  }};

我们还可以使用下面的方式给Anim添加方法。这一方式是将prototype.method看作是一个key,将function(name,fn)看作是一个value,然后通过给function(name,fn)传入对应的参数来实现给Anim添加方法的目的。我们还在method中加入了return this,以此来实现链式调用的目的。

 // Add a method to the Function object that can be used to declare methods.Function.protype.method = function(name, fn) {  this.prototype[name] = fn;  return this; // 链式调用};var Anim = function() {};Anim.method('start', function() {  // ...});Anim.method('stop', function() {  // ...}); // Add a method to the Function object that can be used to declare methods.Function.protype.method = function(name, fn) {  this.prototype[name] = fn;  return this;};var Anim = function() {};Anim.method('start', function() {  // ...});Anim.method('stop', function() {  // ...});

链式调用

Anim.method('start', function() {  // ...}).method('stop', function() {  // ...});

函数是一等对象

在JavaScript中,『函数』被认为是带有可执行代码的复合对象。也就是说,对象所拥有的,函数都拥有,且对象所能做的,函数都可以做。

主要特性:

  • 可以存储于变量中;
  • 可以作为参数传给其他函数;
  • 可以作为返回值从其他函数传出;
  • 可以在运行时构造。

由于函数是一种对象,所以我们可以以如下方式来使用函数:

// Function as Object(function() {  // ...})()(function(a, b) {  // ...  return a + b})(1, 2)  

对象的易变性

在JavaScript中,所有的元素都可以被当成是对象,而且JavaScript中,所有的对象都是易变的。

我们可以使用如下的方式在程序运行时给JavaScript对象属性:

可以在需要的时候给对象添加属性(包括方法):

function aFunction(){};aFunction.aAttribute = 0;

可以在需要的时候,通过对prototype的操作,给JavaScript对象添加方法:

function person(){  this.name="Aaron";  this.age=14;};person.prototype = {  getName: function(){    return this.name;  },  getAge: function(){    return this.age;  }}

注意:由于JavaScript可以在任何时候为已经存在的对象添加属性、方法,所以我们往往不能保证最终被调用的属性、执行的方法是否是我们最初所编写的。

转载于:https://my.oschina.net/skyler/blog/706115

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优酷VIP会员周卡只需7.5元,看《沉香如屑》用优酷视频

由杨紫、成毅主演的《沉香如屑》已上线7天。站内热度值已经破万,也拿下了4次日冠的好成绩。追优酷视频最新热剧不能没有优酷VIP会员啊,优酷的会员,价格算是最便宜的了,下面是幻海优品优酷VIP会员特价充值的价格。优酷VIP会员特价充…

Solr6.1.0Windows安装步骤

一、 环境 solr 6.1.0 下载地址 http://archive.apache.org/dist/lucene/solr/6.1.0/ jdk 1.8 tomcat8 二、 安装solr到tomcat 1.解压solr,把 solr-6.1.0\solr-6.1.0\server 下的solr-webapp 文件夹拷贝到tomcat 的webapps下,重命名为solr;…

[转]Autofac 框架初识与应用

一、前言 这上一篇中,主要讲述了什么是IoC容器,以及了解到它是DI构造函注入的框架,它管理着依赖项的生命周期以及映射关系,同时也介绍实践了在ASP.Net Core中,默认提供的内置IoC容器,以及它的实例注册方式和相应的生命…

【ArcGIS微课1000例】0051:Geodatabase子类型操作全解

子类型是要素类中具有相同属性的要素的子集,或表中具有相同属性的对象的子集。可 通过它们对数据进行分类。 子类型是特征类(或对象类)中特征(或对象)的次级分类。例如一个公路线要素类可以根 据其字段类型的值细分为“高速公路”和“普通公路”两个子类型。 子类…

作为Java程序员应该掌握的10项技能

本文详细罗列了作为Java程序员应该掌握的10项技能。分享给大家供大家参考。具体如下: 1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。 2、命令:必须熟…

在Winform程序中设置管理员权限及为用户组添加写入权限

在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程序具有管理员权限或者设置运行程序的目录具有写入的权限,如果是在操作系统里面,我们可以设置运行程序以管理员身份运行,或者设…

数据库性能系列之索引(上)

前言上一次,我们从优化子查询的角度,讲解了一些简单的数据库性能优化方面的知识。通过优化子查询的顺序,包括合理使用IN和EXISTS,可以起到部分查询的效率提升。但对于其他大多数场景,如单表记录很大,或多表…

题目1023:EXCEL排序---------Case后面的是count,不是C

#include<stdio.h> #include<algorithm> #include<cstring> using namespace std;struct student {char num[10];char name[10];int grade; }s[100002]; int cmp1(student s1,student s2)//case 1 按照学号递增 {return strcmp(s1.num,s2.num)<0; } int…

【ArcGIS微课1000例】0052:创建地理数据库注记(标准注记、要素关联注记、尺寸注记)

本文讲述创建地理数据库注记(标准注记、要素关联注记、尺寸注记)的方法。 文章目录 一、创建标准注记二、创建与要素关联的注记三、创建尺寸注记一、创建标准注记 标准注记不与地理数据库中的要素关联。标准注记的一个例子是,地图上标记某山脉的文字,没有特定的要索代表该…

Lambda表达式超详解

目录 背景 Lambda表达式的用法 函数式接口 Lambda表达式的基本使用 语法精简 变量捕获 匿名内部类 匿名内部类中的变量捕获 Lambda的变量捕获 Lambda表达式在类集中的使用 Collection接口 List接口 Map接口 总结 背景 Lambda表达式是Java SE 8中的一个重要的新特性.…

用十条命令在一分钟内检查Linux服务器性能

这种干活必须要和大家分享的啊。 如果你的Linux服务器突然负载暴增&#xff0c;告警短信快发爆你的手机&#xff0c;如何在最短时间内找出Linux性能问题所在&#xff1f;来看Netflix性能工程团队的这篇博文&#xff0c;看它们通过十条命令在一分钟内对机器性能问题进行诊断。 概…

[javaEE] JDBC快速入门

JDBC&#xff1a;Java Data Base Connectivity java数据库连接 1.组成JDBC的两个包&#xff1a;主要是接口 java.sql javax.sql 2.相应JDBC的数据库实现 在tomcat的目录下面添加mysql-connector-java-5.0.8-bin.jar这个数据库驱动包 package com.tsh.web;import java.io.IOExce…

【ArcGIS微课1000例】0053:注记(水平、沿直线、跟随要素、牵引线、弯曲注记)的创建与编辑

文章目录 一、创建注记1.创建注记要素类2. 水平注记3. 沿直线4. 随沿要素5. 沿引线6. 弯曲二、修改注记1. 复制粘贴2. 移动注记3. 旋转注记4. 删除注记5. 堆叠和取消堆叠6. 向注记添加引线7. 将注记转换为多部分8. 编辑关联要素的注记一、创建注记 注记的创建方法参考:【ArcG…

定制.NET 6.0的依赖注入

本章是《定制ASP NET 6.0框架系列文章》的第三篇。在本章&#xff0c;我们将学习ASP.NET Core的依赖项注入&#xff08;DI&#xff09;以及如何自定义它。我们将讨论以下主题&#xff1a;使用不同的DI容器探索ConfigureServices方法使用其他的ServiceProviderScrutor简介技术准…

50 个 Redis 必备知识:基础知识,架构、调优和监控知识及难点解决

本文包括&#xff1a;30 个 Redis 基础知识&#xff1b;10个 Redis 架构和运维必懂的知识&#xff1b;Redis 调优、监控知识和10个具体应用难点。 本篇文档已整理成pdf文档&#xff0c;需要的同学文末自取 30 个 Redis 基础知识 1、Redis支持哪几种数据类型&#xff1f; Str…

【ArcGIS微课1000例】0043:ArcGIS绘制国界线的3种方法

本文讲解ArcGIS绘制国界线的3种方法。 文章目录 1. 直接修改国界线符号2. 缓冲区工具3. 制图表达1. 直接修改国界线符号 直接修改国界线/省界线的符号。点击“线要素”出现符号选择器,点击【编辑符号】按钮,编辑成下面右图的形式。缺点:只能在边界一侧出现缓冲样式,如下面…

javascript杂记

菜鸟教程   http://www.runoob.com/js/js-tutorial.html 响应键盘事件  https://www.cnblogs.com/shihaiming/p/6210655.html 窗口变化  http://www.jb51.net/article/124581.htm div定位1  http://www.divcss5.com/shili/s587.shtml   div定位2  https://www.cnbl…

没有暑假的Ada 要好好努力咯 C#继续

嗷嗷嗷啊啊啊啊啊转载于:https://www.cnblogs.com/AdaLoong/p/5645720.html

C# 获取系统已安装的.NET版本

本文经原作者授权以原创方式二次分享&#xff0c;欢迎转载、分享。原文作者&#xff1a;唐宋元明清原文地址&#xff1a; https://www.cnblogs.com/kybs0/p/16478587.htmlC# 获取系统已安装的.NET版本获取系统已安装的.NET版本&#xff0c;来确定当前应用可运行的环境。获取系…