『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.pswp.cn/news/284276.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284276.shtml
英文地址,請注明出處:http://en.pswp.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;來確定當前應用可運行的環境。獲取系…