1.前段时间一直忙于研究数据可视化(d3.js,three.js) 以及 php的 laravel框架,生活上也遇到很多事情,这大概就是人生中的迷茫期吧。
回想起,刚出来工作的时候,目标很明确,要学习什么。将来要达到什么样的高度,要跟大神们肩并肩,谈天论地。朝着这个目标一直
努力着。但随着见过的、做过的、东西越多,反而越来越迷茫-----感觉啥都会,借着度娘,工作中基本不会遇到什么问题了。
但仔细想来又啥都不会。闭着眼睛一写,这也记不住,那也记不住(也许是年龄大的原因吧)。目标一直未变,但怎样自己才能成为自己的偶像,却很困惑。
独自在前端的海洋中漂行着,摸索着,我知道一定走了很多弯路,但我也知道一直前进着。前行之中缺少一盏明灯,怎样才能找到自己的明灯呢?
无聊之时读了读jQuery的源码,希望能够找到自己的那盏灯。
/** 1. $.extend的用法。 第一个参数是决定是否需要深复制。 由 true, false。 默认是浅复制 params: options => 接收传递过来的arguments 的中间参数。 name => 没对对象的key值。 src => 当传递的对象key值相同到时候。要和并 copy => 复制的value 值。 copyIsArray => 判断value对象是不是数组。 clone => 当深度复制的时候。需要新建一个变量。不会改变原始的值。 target => 最开始是默认值是取传进来的第一个参数。过后往后一直跳。$.extend(a,b,c); target 为 a, 为b,为c。 i => 决定当前target 等于参数中的某个值 length => deep => 默认是false 是决定是否需要深复制的参数。 true 是深复制。 false 是浅复制*/jQuery.extend = jQuery.fn.extend = function() { var options, name, src, copy, copyIsArray, clone, target = arguments[ 0 ] || {}, i = 1, length = arguments.length, deep = false; // 判断 target 来决定是否 深复制 if ( typeof target === "boolean" ) { deep = target; //当深复制的时候,需要跳过第一个参数。 来循环传进来的参数。 刚开始 1,2,3 target = arguments[ i ] || {}; i++; } // 当 target 不是一个对象且 不是一个函数对象 这个时候就把target 变为空对象。 if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { target = {}; } // 如果传递过来的参数只有一个的情况下。target 就是该参数。 if ( i === length ) { target = this; i--; // 把i 改为1 } for ( ; i < length; i++ ) { // 处理非空 或者 undefined 的情况。 null == null 。 undefined == null; //options 是来接收除了第一个参数外的所有参数。中间桥梁的作用吧 if ( ( options = arguments[ i ] ) != null ) { // name in options 决定了 传过来的值必须是对象。如果不是对象的话。将要被拆分 for ( name in options ) { //这个是决定后面同级 的key 值, 后面将要覆盖前面的。 src = target[ name ]; //获取 key值为 name 的 value值。 copy = options[ name ]; // Prevent never-ending loop 阻止无限循环。 ???没有搞懂,设么情况下才会出现这种情况。 if ( target === copy ) { continue; } /** 1.深复制,且value 为对象属性的时候执行递归复制。 isPlainObect(copy) 判断copy第不是一个 纯对象 2.copy 时一个数组的时候。执行里面的函数。 3.(因为只有对象value 和 数组value 是需要进行深复制的。) */ if ( deep && copy && ( jQuery.isPlainObject( copy ) || ( copyIsArray = Array.isArray( copy ) ) ) ) { if ( copyIsArray ) { copyIsArray = false; clone = src && Array.isArray( src ) ? src : []; } else { clone = src && jQuery.isPlainObject( src ) ? src : {}; } // 创建新对象。来进行深度复制。 target[ name ] = jQuery.extend( deep, clone, copy ); //除了对象数组,和undefined 的值。 } else if ( copy !== undefined ) { target[ name ] = copy; } } } } // Return the modified object return target; };
本段来自jquery。 version = 3.2.1 版本。 每个人的观点必定有不一样的地方。有错的地方希望大家指出来。共同学习。
上面这段代码中有个地方一直没有想出来。
// Prevent never-ending loop 阻止无限循环。 ???没有搞懂,设么情况下才会出现这种情况。 {} != {} 没有想出来什么情况下才会出现target === copy的情况。 if ( target === copy ) { continue; }
目前看了大概10分之1吧,学习了很多套路。也许真的能够找到自己的那盏明灯。
Atas ialah kandungan terperinci jquery的extend方法解析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Python lebih sesuai untuk sains data dan pembelajaran mesin, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python terkenal dengan sintaks ringkas dan ekosistem perpustakaan yang kaya, dan sesuai untuk analisis data dan pembangunan web. 2. JavaScript adalah teras pembangunan front-end. Node.js menyokong pengaturcaraan sisi pelayan dan sesuai untuk pembangunan stack penuh.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

Dreamweaver CS6
Alat pembangunan web visual